javascript原型
Aug 14, 2016
js原型是这门语言的最为独到之处,理解了原型,也就理解了js的各种继承原理。
先说说js中的this
js中的this有多种情况,分别代指:节点元素,window,实例对象,object。
代表节点元素的情况:
1 | var box = document.getElementById("box"); |
代表window的情况:
在全局下直接输出this就是window:1
console.log(this); // window
普通调用函数(全局函数)中的this也会指向window:1
2
3
4
5
6var foo = function(){
this.name = "tom";
this.age = 20;
}
foo();
window.name // tom
但有种情况,当也属于普通调用函数(函数中的函数):1
2
3
4
5
6
7function foo(){
function bar(){
console.log("this:",this);
}
bar();
}
foo(); // window
上述代码中,虽然bar在foo内部,但调用时this依然指向window而不是foo。
代表实例对象的情况:
1 | var foo = function(){ |
代表object的情况:
1 | var obj = { |
特殊情况:被apply,call篡改的this
1 | window.name = "tom" |