相关疑难解决方法(0)

Javascript中的"this"关键字如何在对象文字中起作用?

我已经看到"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没有绑定到当前对象的文字,什么它必然?

javascript

45
推荐指数
4
解决办法
2万
查看次数

"这个"的范围

我有一个简单的对象,我不理解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

5
推荐指数
1
解决办法
251
查看次数

标签 统计

javascript ×2