原型,原型链和原型链继承

javaScript里面每一个方法都是一个原型对象(prototype),该对象都是可扩展的,千言万语不如一行代码;
例:

// 所需要的参数
var lenoveObj = {
    "name":'联想 Y100',
    "address":"上海"
}

var dimension = "100`";

var huaweiObj = {
    "name":'huawei P10',
    "address":"上海"
}

var powerObj = {
    "capacity":'10000mah',
    "runtime":'5day'
}

var runsizeObj = {
    "name":"lenove",
    "runsize":"512M"
}

// 构造函数
var Commodity = function(obj ){
    this.address = obj.address;
    this.name = obj.name;
    this.origin = function( address ){
        console.log( "address", this.address )
    }
}

//扩展的方法 price()
Commodity.prototype.price = function(price){
    console.log("price函数", price )
}

// 需要继承构造函数的方法
var Computer = function(){}

Computer.prototype = new Commodity(lenoveObj);

Computer.prototype.__prototype__ = Commodity.prototype;

// 扩展的方法 runFn()
Computer.prototype.runFn = function(runsize){
    console.log( "runsize.runsize:"+runsize.runsize )
    console.log( "this.pcWidth:"+this.pcWidth )
}
// 扩展的属性 pcWidth
Computer.prototype.pcWidth = dimension;

// 需要继承构造函数的方法
var Phone = function(){}

// 原型继承 并传入构造函数必要的参数
Phone.prototype = new Commodity(huaweiObj);

// 原型链继承
Phone.prototype.__prototype__ = Commodity.prototype;

// 继承之后扩展的方法 powerFn()
Phone.prototype.powerFn = function(){
    console.log("this.address",this.address)
}

//扩展的属性 pingsize
Phone.prototype.pingsize="5`";

// Phone 
var huawei = new Phone();
//查看扩展属性
console.log("huawei.name:",huawei.name);
//查看自带方法
huawei.origin();
//查看构造函数的扩展方法
huawei.price("5000")
//检测方法继承来源
console.log(huawei instanceof Commodity ) //判断  instanceof 该方法是否继承于某个构造函数
//查看继承后扩展的方法
huawei.powerFn();


// Computer 
var lenove = new Computer();
//查看继承自Computer构造函数下的runFn方法 传参runsizeObj
lenove.runFn(runsizeObj);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值