gpt4 book ai didi

JavaScript 语法 : what is ({ }) Is it a function or object?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:52:40 24 4
gpt4 key购买 nike

作为具有 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com