您的位置:首页 > Web前端 > JavaScript

Javascript实现继承的理解

2016-09-05 14:36 204 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。

JS是一种基于对象的语言,但不是面向对象的语言,因为JS没有class。但JS能支持面向对象。

JS用new 构造函数,来生成新对象。

构造函数,就是普通函数中,有this变量的函数。

this变量在构造函数中,所以它新生成的值,与函数的调用方式有关。 最根本的理解,是this都指向调用它的对象

(1) 如果是普通的函数调用,this就是全局对象

(2) 如果是new来调用的函数,则this指向新生成的对象

(3) 如果新生成一个对象,将这个构造函数作为新对象的属性,则this指向调用它的对象

每个构造函数,都有prototype属性,prototype类似于“基类”,能让被同一个构造函数实例化的对象共享属性和方法,从而实现类似“继承”的效果。

这里给一个实现单继承的例子:

[javascript] view
plain copy

A = function(){  

    this.mm=3;   

    this.nn=4;   

    this.pp = function(x){  

        console.log(x+1);  

    }  

}  

B = function(){  

    this.m=1;   

    this.n=2;   

    this.p = function(x){  

        console.log(x);  

    }  

}  

B.prototype = new A();  

b = new B();  

b.pp(b.m);//2  

所以,prototype的作用,是能为构造函数添加属性和方法。

Ref:
[1] https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript
[2] http://www.ruanyifeng.com/blog/2011/06/designing_ideas_of_inheritance_mechanism_in_javascript.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: