作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
作为具有 OOP 背景(c#、Java)的开发人员,OOP JavaScript 对我来说是野马。我正在尝试学习语言的具体细节,然后跳转到图书馆(我错了吗?);
所以,我查阅了很多关于对象、函数等的书籍/教程。学习了几种创建对象的方法,但几乎每个 JS 库中使用的语法都让我感到困惑。即
var Person = Backbone.extend.Model({
//pretty complex staff
})
幕后的模型是什么?目的?功能?
最佳答案
那不是正确的 Backbone 语法。那实际上应该是:
Backbone.Model.extend({
});
在这种情况下,extend 是一个函数。请注意,您正在使用 ()
调用它。然而,javascript 中的函数也是对象(稍后会详细介绍)。您可能对其中的 {}
感到困惑。那是因为您将该对象作为参数传递给函数。
如果 extend
是一个需要字符串作为参数/参数的函数,它看起来像这样:extend('some string')
。在这种情况下,它正在获取一个对象。例如:
var someObject = {
someProperty: 'someValue'
}
var Person = Backbone.Model.extend(someObject);
等同于:
var Person = Backbone.Model.extend({
someProperty: 'someValue'
});
这只是函数中的示例:
Backbone.Model.extend = function(obj) {
console.log(obj.someProperty); //logs "someValue"
}
正如我所说,在 javascript 中,函数也是对象。实际上,大多数事物都是对象。我建议您对此进行更多研究。由于这不是您问题的重点,我将简单地演示一下:
var someObj = {
someProperty: '123'
};
console.log(someObj.someProperty); //logs "123"
var someFunction = function() {
};
someFunction.someProperty = '123';
console.log(someFunction.someProperty); //logs "123"
不过,最好添加到原型(prototype)中,这样继承将像这样工作:
someFunction.prototype.someProperty = '123';
var foo = new someFunction();
console.log(foo.someProperty); //logs "123"
Here's a little demo you can mess with (click).
所以..总而言之,JavaScript 是双赢利器。
关于JavaScript 语法 : what is ({ }) Is it a function or object?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21357889/
我是一名优秀的程序员,十分优秀!