我已经看到"this"关键字如何在函数中起作用?,但我不认为它回答了以下问题.
鉴于此代码:
var MyDate = function(date) {
this.date = date;
};
var obj1 = {
foo: new Date(),
bar: new MyDate(this.foo) // this.foo is undefined
};
var obj2 = {};
obj2.foo = new Date();
obj2.bar = new MyDate(this.foo); // this.foo is undefined
var obj3 = {
foo: new Date(),
bar: new MyDate(obj3.foo)
};
var obj4 = {};
obj4.foo = new Date();
obj4.bar = new MyDate(obj4.foo);
Run Code Online (Sandbox Code Playgroud)
为什么前两次尝试失败,但最后两次失败?如果this没有绑定到当前对象的文字,什么是它必然?
我有一个简单的对象,我不理解this通过调用此对象的函数的概念(范围).
为什么在最后一个变量(3)中调用show()(show()没有父对象的对象内部的函数)结果是"这是全局的"而不是内部变量title("Color Picker")?
我有一个模糊的想法,即popup.show()在show定义gloabal变量之后调用函数,this指的是全局对象.这是逻辑解释吗?
代码:http://jsbin.com/otuzac/1/edit.
var title="'This' is global";
var popup={
dom_element:("#popup"),
title :"Color Picker",
prev_color :'#fff',
set_color : function(color){
color=color || this.prev_color;
//set the color
return color;
},
show :function(){
return("showing "+this.title);
}
};
var show=popup.show();
//Case 1: var show=popup.show()
alert(show); //output "Color Picker"
//Case 2: var show=popup.show()
alert(popup.show()); //output "Color Picker"
//Case 3: var show=popup.show !!! (no parent.)
alert(show()); //output …Run Code Online (Sandbox Code Playgroud) javascript ×2