gpt4 book ai didi

javascript - 传递参数查看

转载 作者:行者123 更新时间:2023-11-28 13:37:47 26 4
gpt4 key购买 nike

我尝试传递一些参数来查看构造函数。

我以这种方式创建我的对象:new HeadCell({isSortable: true,parent: this});

因此在 HeadCell 中初始化:

initialize: function(options){
console.log("HeadCell initialized");
console.log(options);
console.log(options.isSortable);
}

控制台输出为:

HeadCell initialized
Object {isSortable: true, parent: r}

Uncaught TypeError: Cannot read property 'isSortable' of undefined

有什么想法吗?

更新1

我尝试在 fiddle 中运行一个小测试,结果是相同的。

http://jsfiddle.net/ramiromd90/hHFP3/

更新2

我在 fiddle 上尝试了你的例子,效果很好!但是,在我的代码中不起作用。

这里是我真实代码的一个小例子:

http://jsfiddle.net/ramiromd90/XCK47/

更新3

感谢所有回复,问题是我没有在循环中传递参数(请参阅 fiddle )。我们所说的传递参数的方式是正确的!谢谢

最佳答案

fiddle 中的代码不正确,因为当选项参数从未初始化为 View 对象的一部分时,您正在调用 this.options 。换句话说,您正在调用一个不存在的属性

试试这个:

$(function(){
var Aview = Backbone.View.extend({
initialize: function(options){
console.log(options.foo);
console.log(options.bar);
}
});

new Aview({foo:'isFoo!',bar:'isBar!'});
});

现在,让我们更详细地了解当您将选项参数作为参数传递给构造函数时,选项参数实际发生的情况。

根据doc

有几个特殊选项,如果通过,将直接附加到 View :model、collection、el、id、className、tagName、attributes 和 events。

这是什么意思?嗯,选项参数实际上在 View 构造函数中以两种方式使用。

首先,它使用此调用设置特殊选项

_.extend(this, _.pick(options, viewOptions));

它返回一个新对象,其中仅包含viewOptions中的特殊选项,然后将这些选项添加到 View 对象中。

接下来,一旦添加了这些特殊选项,它就会调用初始化函数。

this.initialize.apply(this, arguments);

在这种情况下,相当于调用

currentViewObject.initialize({anOptionsAttribute: 'hello'});

它允许您作为参数或通过 arguments 对象访问选项对象。正如您所看到的,选项参数在任何时候都不会设置为属性,因此调用 this.options 是毫无意义的。

关于javascript - 传递参数查看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20164540/

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