这个'的范围不一致。在javascript中

时间:2015-11-30 16:51:22

标签: javascript

在javascript中,所有函数都是对象。那么当我使用'这个'像这样:

var myObj = function() {
    doSomething: function() {
        alert('msg');
    }

    myFunc2: function () {
        this.doSomething(); //'this' doesn't equal myFunc2, it's myObj
    }
}

'这'是指myObj而不是myFunc2? Javascript具有功能范围,'这个'正在myFunc2中使用,所以它应该引用myFunc2。

为什么不是这样?这种语言有时似乎很不一致。

1 个答案:

答案 0 :(得分:0)

JavaScript没有“功能范围”,您正在试验class Hierarchy { private(set) weak var parent : Hierarchy? private(set) var children: [Hierarchy] = [] func addSub(item:Hierarchy) { item.parent = self children.append(item) } } class A : Hierarchy { } class B : Hierarchy { } // put this in another file func test() { let a = A() let b = B() a.addSub(b) b.parent = nil // impossible } 在JavaScript中的工作方式。

this关键字始终引用调用该函数的对象,在本例中为this

您不了解JS 系列丛书中查看本章,了解有关myObj在JavaScript中的工作原理的更多信息:

You Don't Know JS: this & Object Prototypes