js原型prototype属性用法实例

//原型方法创建对象的属性和方法,达到共享的目的
function Box(){};//里面什么都没有,如果有就是实例属性和方法
Box.prototype.name='tianwei';
Box.prototype.age='100';
Box.prototype.run=function(){
    return this.name+this.age;
};
var box1=new Box();
document.write(box1.name);

实例属性不会共享,原型属性共享,优先访问实例属性

//删除属性:

delete box1.name;

delete Box.prototype.name;

//判断属性是否在实例里面:

box1.hasOwnProperty('name');

  //只要有这个属性就返回true

'name' in box1;

 

//原型方法创建对象的属性和方法,达到共享的目的
function Box(){};//里面什么都没有,如果有就是实例属性和方法
Box.prototype={
    constructor:Box,
    name:'tianwei',
    age:'100',
    run:function(){
        return this.name+this.age;
    }
}

var box1=new Box();
document.write(box1.constructor);

 

var box= [1,2,3,2,10,3];
document.write(box.sort());
/*Array.prototype.sort;*/
alert(String.prototype.substr);
String.prototype.addString=function(){
    return this+'添加成功';
};

var box='4343';
alert(box.addString());

 需要独立部分使用构造函数

需要共享部分使用原型模式

//組合構造函數+原型

function Box(name,age){ //需要獨立部分
    this.name=name;
    this.age=age;
    this.family=['1','2','3'];
}

Box.prototype={   //共享部分
    constructor:Box,
    run:function(){
        return this.name+this.age;
    }
}

var box1=new Box('tian',100);

box1.family.push('4');
alert(box1.family);
var box2=new Box('wei',200);
alert(box2.family);

把上面封装在一起,使用

动态原型模式

//組合構造函數+原型

function Box(name, age) { //需要獨立部分
    this.name = name;
    this.age = age;
    this.family = ['1', '2', '3'];
    //原型只需要初始化一次
    if (typeof this.run != 'function') {
        Box.prototype.run = function() {
            return this.name + this.age;
        }
    }
}

var box1 = new Box('aaa', 111);
alert(box1.run());

var box2 = new Box('bbb', 222);
alert(box2.run());

 继承

继承依靠原型链完成

  

function Box () {
    this.name='lee';
}

function Desk(){
    this.age=100;
}
//new box将Box里的信息交给desk
Desk.prototype=new Box();

var desk=new Desk();
alert(desk.name);

 组合继承,实例里面通过对象冒充继承,原型里面通过原型链继承

function Box (name,age) {
    this.name=name;
    this.age=age;

}
Box.prototype.run=function(){
    return this.name+this.age;
}
function Desk(name,age){   //对象冒充
    Box.call(this,name,age);
}
Desk.prototype=new Box();//原型链继承

var desk=new Desk('tian',100);
alert(desk.run());

 

                                                                                              

 

转载于:https://www.cnblogs.com/yestian/p/6502542.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值