Mim*_*ght 0 javascript oop constructor class
我理解将方法直接分配给类的原型是很好的做法,这样每次调用函数时都不会重新定义它们.
var A = function () {
this.prop = "A property";
}
A.prototype.method = function () {
return "A method";
}
Run Code Online (Sandbox Code Playgroud)
假设我想在构造函数中调用以这种方式定义的方法.这可能吗?
var A = function (options) {
initialize(options); // initialize is undefined.
}
A.prototype.initialize = function (options) {
// do something with options.
}
Run Code Online (Sandbox Code Playgroud)
在构造函数中创建存根方法不起作用,因为它被调用而不是原型的函数版本.我能够使这个工作的唯一方法是通过括号语法引用该函数,this["initialize"]()这看起来非常不优雅.
var A = function (options) {
this["initialize"](options); // function isn't defined yet but will be soon!
}
A.prototype.initialize = function (options) {
// do something with options.
}
Run Code Online (Sandbox Code Playgroud)
这看起来很笨拙,可能不是调用此函数的最佳方式.还有另一种方式或我错过了什么?
你的最后一种方法是正确的,但你不需要引号.
var A = function (options) {
this.initialize(options);
};
A.prototype.initialize = function (options) {
// do something with options.
};
Run Code Online (Sandbox Code Playgroud)
假设A作为构造函数调用,this是对正在构造的新对象的引用,并且其原型链已经建立,因此它已经可以访问该initialize方法.
当然没有要求initialize原型.如果不打算多次调用它,那么将它定义为独立函数可能更有意义.
var A = function (options) {
initialize(this, options);
};
function initialize (obj, options) {
// do something with options.
};
Run Code Online (Sandbox Code Playgroud)
或者您可以将初始化代码放在构造函数中.
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |