JS prototype原型

每个函数/对象都有一个prototype(原型)属性

指针指向的就是prototype对象

所有创建在prototype上的属性和方法

都将被所有对象实例分享

构造函数和原型混合使用

使用构造函数定义对象的属性,使用原型(prototype)定义对象的方法,这样就可以做到属性私有,方法共享

书写语法     构造函数名.prototype.xxx = xxx ;

function Dog(type){
        this.type=function(){
            console.info("类型:"+type);
        };
    }
    Dog.prototype.name="我是小狗"
    var pp = new Dog("大型犬");
    var cc = new Dog("小型犬");
    console.info(pp.name==cc.name);
    pp.type()
    cc.type()

继承

    function Animal(name) {
            this.name = name;
            this.eat = function () {
                console.info("动物吃东西了!");
            }
        }
    function Dog(name) {
            this.name = name;
        }
        Dog.prototype = new Animal("狗");
        var erHa = new Dog("哈士奇");
        console.info(erHa.name);// 输出“哈士奇”
        delete erHa.name;
        console.info(erHa.name);// 输出“狗”
        delete Dog.prototype.name;
        console.info(erHa.name);// 输出“undefined”
        erHa.eat();// 输出“动物吃东西了!”
        erHa.eat = function () {
            console.info("狗吃肉!");
        }
        erHa.eat();// 输出“狗吃肉!”

原型链 层层指向父原型的关系,可以用来查找对象之间的继承关系

 function a(x){
        this.x=x;
    }
    a.prototype.x=0;
    function b(x){
        this.x=x;
    }
    b.prototype=new a(1);
    function c(x){
        this.x=x;
    }
    c.prototype=new b(2);
    var d = new c(3);
    console.info(d)
    console.info(d.x)
    delete d.x
    console.info(d.x)
    delete c.prototype.x
    console.info(d.x)
    delete b.prototype.x
    console.info(d.x)
    delete a.prototype.x
    console.info(d.x)

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值