在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。
为什么不是这样?这种语言有时似乎很不一致。
答案 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中的工作原理的更多信息: