js继承的理解
2010-10-29 10:03
162 查看
今天再次看js继承,有了新的理解。其实是对作用域的进一步理解
首先看一个例子:
function A(name){
this.name = name;
this.sayHello = function(){alert(this.name+” say Hello!”);};
}
function B(name,id){
this.temp = A;
this.temp(name); //相当于new A();
delete this.temp; //防止在以后通过temp引用覆盖超类A的属性和方法
this.id = id;
this.checkId = function(ID){alert(this.id==ID)};
}
这是经典的对象冒充,标红的那两行相当于执行了A(name),并且执行后A中的this已经换成了B中的this。
那么我们把标红的部分直接换成 A(name)会怎样呢?
如此我们做试验
var b = new B("B","BID");
alert(b.name);//undefined
为何?
因为执行A的时候没有绑定作用域,this仍然是window
我们输出alert(window.name)或alert(name)//B
那么这中对象冒充实际上就是变换了this,绑定作用域到某个对象上
那么除了这个方法还有没有其他方法呢?
apply和call
个人理解的作用:调用函数并绑定作用域
这就是对象冒充的含义
首先看一个例子:
function A(name){
this.name = name;
this.sayHello = function(){alert(this.name+” say Hello!”);};
}
function B(name,id){
this.temp = A;
this.temp(name); //相当于new A();
delete this.temp; //防止在以后通过temp引用覆盖超类A的属性和方法
this.id = id;
this.checkId = function(ID){alert(this.id==ID)};
}
这是经典的对象冒充,标红的那两行相当于执行了A(name),并且执行后A中的this已经换成了B中的this。
那么我们把标红的部分直接换成 A(name)会怎样呢?
如此我们做试验
var b = new B("B","BID");
alert(b.name);//undefined
为何?
因为执行A的时候没有绑定作用域,this仍然是window
我们输出alert(window.name)或alert(name)//B
那么这中对象冒充实际上就是变换了this,绑定作用域到某个对象上
那么除了这个方法还有没有其他方法呢?
apply和call
个人理解的作用:调用函数并绑定作用域
这就是对象冒充的含义
相关文章推荐
- 深入理解js继承
- 对于js原型和原型链继承的简单理解(第一种,原型链继承)
- JS之理解组合继承模式和寄生式组合继承的区别
- JS继承机制--写的比较通俗易懂,一系列文章看文对于你对于JS继承机制的理解会加深很多
- js核心基础之理解原型对象以及原型继承(一)
- 关于js原型继承的理解
- 理解js对象继承的N种模式
- 重新理解JS的6种继承方式
- 重新理解JS的6种继承方式
- JS继承机制的深入理解--动态原型存在的问题与解决
- 理解js的对象,对象创建,继承
- js中原型,原型链,原型链继承的个人理解
- js的面向对象的程序设计之理解继承
- 我对JS的继承的理解
- Js中面向对象编程之继承的几种方式及理解
- 深入理解JS继承和原型链的问题
- 浅谈js中继承的理解和实现
- JS继承机制--写的比较通俗易懂,一系列文章看文对于你对于JS继承机制的理解会加深很多
- 重新理解JS的6种继承方式
- 理解js对象继承的N种模式