JavaScript对象中的init函数有什么特别之处吗?

时间:2011-07-17 22:30:26

标签: javascript

在很多代码中,通常会看到声明init函数,如下所示:

var someObject = {

    // What is this for?
    init: function () {
        // Call here.
    }
};

我应该知道的init函数有什么特别之处吗?

2 个答案:

答案 0 :(得分:9)

对于某些框架(尽管prototypebackbone使用initialize代替),但普通旧javascript中的init函数没有什么特别之处

答案 1 :(得分:6)

执行摘要:像其他人一样 - init属性在Javascript中并不神奇。

更长的故事:Javascript对象只是键 - >值存储。如果您自己实例化一个对象,那么它几乎是空的 - 它只从其构造函数的原型继承了一些属性。这是来自Chrome检查员的示例转储:

> obj = {}
Object
+-__proto__: Object
 |-__defineGetter__: function __defineGetter__() { [native code] }
 |-__defineSetter__: function __defineSetter__() { [native code] }
 |-__lookupGetter__: function __lookupGetter__() { [native code] }
 |-__lookupSetter__: function __lookupSetter__() { [native code] }
 |-constructor: function Object() { [native code] }
 |-hasOwnProperty: function hasOwnProperty() { [native code] }
 |-isPrototypeOf: function isPrototypeOf() { [native code] }
 |-propertyIsEnumerable: function propertyIsEnumerable() { [native code] }
 |-toLocaleString: function toLocaleString() { [native code] }
 |-toString: function toString() { [native code] }
 |-valueOf: function valueOf() { [native code] }    > obj = {}

- 如您所见,列表中没有init。距init最近的属性为constructor,您可以阅读以下内容: here