首页 > Web开发 > 详细

js 继承inheritance/extends

时间:2014-03-26 09:51:44      阅读:445      评论:0      收藏:0      [点我收藏+]

bubuko.com,布布扣

主要就是《javascript语言精粹》语言精粹中的内容

5.1伪类

bubuko.com,布布扣
Function.prototype.method = function(name,func){ this.prototype[name] = func; return this; }

var
Cat = function(name){ this.name = name; this.saying = "meow"; } Cat.prototype = new Mammal(); Cat.prototype.purr = function(n){ var i,s = ""; for(i = 0 ; i < n ; i+=1){ if(s){ s += "-"; } s += "r"; } return s; } Cat.prototype.get_name = function(){ return this.says() + " " + this.name + " " + this.says(); }
var myCat = new Cat("bubu");
var says = myCat.says();
var purr = myCat.purr(5);
var name = myCat.get_name();

console.log(says , purr , name);
 
bubuko.com,布布扣

伪类模式本意是想向面向对象靠拢,我们可以隐藏一些丑陋的细节,这是通过使用method方法定义一个inherits方法来实现的

bubuko.com,布布扣
Function.prototype.method = function(name,func){
    this.prototype[name] = func;
    return this;
}

Function.method(‘inherits‘,function(Parent){
    this.prototype = new Parent();
    return this;
})

var Cat = function(name){
    this.name = name;
    this.saying = "meow";
}.
    inherits(Mammal).
        method("purr",function(n){
        var i,s = "";
        for(i = 0 ; i < n ; i+=1){
            if(s){
                s += "-";
            }
            s += "r";
        }
        return s;
    }).
        method("get_name",function(){
            return this.says() + " " + this.name + " " + this.says();
        });

var myCat = new Cat("bubu");
var says = myCat.says();
var purr = myCat.purr(5);
var name = myCat.get_name();

console.log(says , purr , name);
bubuko.com,布布扣

我们现在有了行为像“类”的构造器函数,但是他们可能有着令人惊讶的行为:没有私有环境;所谓的属性都是公开的。无法访问super(父类)的方法

更糟的是,使用构造器函数存在一个严重的危害。如果你在调用构造器函数时忘记在前面加上new 前缀,那么this将不会绑定到一个新对象上。更可悲的是,this将绑定到全局对象上,所以不精没有扩充新对象,反而将破坏全局变量

伪类给不熟悉js的程序员提供了便利,但是它也隐藏了该语言的真实本质。许多复杂的类层次结构产生的原因是静态类型检查的约束。js完全摆脱了那些约束。在基于类的语言中,类的继承是代码重用的唯一方式。js有更好的选择。

js 继承inheritance/extends,布布扣,bubuko.com

js 继承inheritance/extends

原文:http://www.cnblogs.com/della/p/3622527.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!