bro*_*ode 3 javascript oop object backbone.js
作为具有OOP背景的开发人员(c#,Java)OOP JavaScript对我来说是疯狂的.我正在努力学习语言的基础,然后跳上图书馆(我错了吗?);
所以,我检查了十几本关于对象,函数等的书籍/教程.了解了几种创建对象的方法,但几乎每个JS库中使用的语法都让我困惑.亦即
var Person = Backbone.extend.Model({
//pretty complex staff
})
Run Code Online (Sandbox Code Playgroud)
什么是幕后模特?宾语?功能?
m59*_*m59 13
这不是正确的主干语法.那应该是:
Backbone.Model.extend({
});
Run Code Online (Sandbox Code Playgroud)
在这种情况下,extend是一个函数.请注意,您正在调用它().但是,javascript中的函数也是对象(稍后会详细介绍).你可能会对{}它的内部感到困惑.那是因为您将该对象作为参数传递给函数.
如果extend是一个期望字符串作为参数/参数的函数,它将如下所示:extend('some string').在这种情况下,它是一个对象.例如:
var someObject = {
someProperty: 'someValue'
}
var Person = Backbone.Model.extend(someObject);
Run Code Online (Sandbox Code Playgroud)
是相同的:
var Person = Backbone.Model.extend({
someProperty: 'someValue'
});
Run Code Online (Sandbox Code Playgroud)
这里只是一个示例,说明函数的外观:
Backbone.Model.extend = function(obj) {
console.log(obj.someProperty); //logs "someValue"
}
Run Code Online (Sandbox Code Playgroud)
正如我所说,在javascript中,函数也是对象.实际上,大多数东西都是物体.我建议你研究一下这个.由于这不是你问题的焦点,我只是简单地说明:
var someObj = {
someProperty: '123'
};
console.log(someObj.someProperty); //logs "123"
var someFunction = function() {
};
someFunction.someProperty = '123';
console.log(someFunction.someProperty); //logs "123"
Run Code Online (Sandbox Code Playgroud)
但是,最好添加到原型中,以便继承可以像这样工作:
someFunction.prototype.someProperty = '123';
var foo = new someFunction();
console.log(foo.someProperty); //logs "123"
Run Code Online (Sandbox Code Playgroud)
所以..总之,JavaScript是赢家.