为什么我不能为我所在范围内的函数创建方法?
Why can't I create a method to the function who's scope I'm within?
我正在尝试创建一个绑定到全局名称空间的对象,然后在该对象中创建引用自身的方法。我希望在创建对象时创建所有方法,并定义 obj
,但方法不是(基于底部的控制台输出)。 return this;
不是 return 调用的方法本身吗?还是我调用 this.methd
的问题在 obj 函数内部不正确?如果这是重复的,我提前道歉,看起来类似的问题总体上不像我的,关闭但没有雪茄。
(function(window, undefined){
var obj = function(){
this.methd = function() {
return this;
};
}
window.obj = obj;
})(window);
function defined(value) {
var def = value ? 'pass' : 'fail';
return def;
}
console.log(defined(obj))
console.log(defined(obj.methd))
//Output:
//pass
//fail
您正在将 window.obj
设置为对函数的引用。在该函数运行之前,methd
不会在任何地方定义,无论该函数的内容或它是什么 returns。
如果您将其作为构造函数调用来创建实例,methd
将被定义,但仅在 那个特定实例上 :
var b = new obj();
console.log(defined(b.methd)); //pass
或者,仅将函数作为普通函数调用将使用 this
(这是全局对象,或 window
)的当前值并在上创建 methd
函数该对象:
obj();
console.log(defined(window.methd)); //pass
我正在尝试创建一个绑定到全局名称空间的对象,然后在该对象中创建引用自身的方法。我希望在创建对象时创建所有方法,并定义 obj
,但方法不是(基于底部的控制台输出)。 return this;
不是 return 调用的方法本身吗?还是我调用 this.methd
的问题在 obj 函数内部不正确?如果这是重复的,我提前道歉,看起来类似的问题总体上不像我的,关闭但没有雪茄。
(function(window, undefined){
var obj = function(){
this.methd = function() {
return this;
};
}
window.obj = obj;
})(window);
function defined(value) {
var def = value ? 'pass' : 'fail';
return def;
}
console.log(defined(obj))
console.log(defined(obj.methd))
//Output:
//pass
//fail
您正在将 window.obj
设置为对函数的引用。在该函数运行之前,methd
不会在任何地方定义,无论该函数的内容或它是什么 returns。
如果您将其作为构造函数调用来创建实例,methd
将被定义,但仅在 那个特定实例上 :
var b = new obj();
console.log(defined(b.methd)); //pass
或者,仅将函数作为普通函数调用将使用 this
(这是全局对象,或 window
)的当前值并在上创建 methd
函数该对象:
obj();
console.log(defined(window.methd)); //pass