我知道对象和数组的类型。我知道如何使用以及如何创建Object和Array,但我不知道JavaScript中的child
的类型以及如何创建child
的类型?'孩子'是什么类型?
这是一个Chrome控制台的屏幕截图。
我知道对象和数组的类型。我知道如何使用以及如何创建Object和Array,但我不知道JavaScript中的child
的类型以及如何创建child
的类型?'孩子'是什么类型?
这是一个Chrome控制台的屏幕截图。
这似乎是一个名为child
自定义类的一个实例。
如果您在Chrome的控制台运行下面的代码:
function child() {}
new child();
你会看到相同的输出,减去所有的child
属性:
对于它的工作,通常命名约定是大写构造函数的名字,如Child
,但这在技术上并非必要。
谢谢,我明白了。 – jasondayee
我同意mu is too short这很可能是Backbone.Model
的一个实例,无论是直接还是间接(通过子类)。
你看到child
的原因是由于骨干网内部的机械。当您使用Backbone.Model.extend
时,主干会为新类建立构造函数,并且此构造函数的名称为child
。这在code for the .extend
method中很容易看到。
获得某种有用的标识出你在runtimme什么是困难的,如果不是完全不可能的。我已习惯于使用__classname__
作为一个领域,在这个领域中我将班级的名字夸大了。然后在我正在检查的对象的__proto__
字段中可见。我仅将它用于调试目的。下面是在Chrome的控制台一个例子:
由于@mu是看对象属性太短correctly guessed,它的Backbone.Model
一个实例。你可以创建同一个对象(类)这样的另一个实例,提供你知道正确的构造函数的参数:
new child.constructor(...);
你也可以使用一个新的集合模型(类),虽然你刚刚到访问模型实例:
new MyCollection = Backbone.Collection.extend({
model: child.constructor,
...
});
由于@Louis noted,则无法得到合理的(类)的名字在一个对象实例的,除非你把一些名字到对象原型自己。我经常需要在我的模特一些初始化代码,而不是把它给initialize
方法,我声明名为constructor明确并把初始化代码出现。就像命名MyModel
的功能在这里:
var MyModel = Backbone.Model.extend({
constructor: function MyModel(attributes, options) {
Backbone.Model.prototype.constructor.call(this, attributes, options);
...
}
});
您可以在Chrome开发者工具查看对象(类)的名字是这样的:
var Car = Backbone.Model.extend({
constructor: function Car(attributes, options) {
Backbone.Model.prototype.constructor.call(this, attributes, options);
}
});
var Truck = Car.extend({
constructor: function Truck(attributes, options) {
Car.prototype.constructor.call(this, attributes, options);
}
});
字符串的属性,如__classname___
将可保持不变也在缩小代码中。命名构造函数将仅在非缩小代码中可用。如果在缩小代码后仍然需要查看有意义的构造函数名称,则必须使用exclude them from mangling。
你是如何在控制台中获得该对象的?结构和骨干标签表明它是某种“Backbone.Model”。 –
是的即时通讯使用Backbone.Model .. – jasondayee
并且在输出后面有一些'console.log(something_you_are_not_showing_us)',对吧? –