//A的構造函數
function A(){}
//A的原型對象方法
A.prototype.a = function(){
consloe.log("A的原型方法");
}
//B的構造函數
function B(){}
//B的原型對象方法
B.prototype.b = function(){
console.log("B的原型方法");
}
//B的原型,指向了A的實例對象(改變原型指向 )
B.prototype = new A();
var bObj = new B();
bObj.b();//bObj.b is not a function
bObj.a();//A的原型方法
複製代碼
function Person(){
}
var per = new Person();
複製代碼
<body>
<div id="dv"></div>
<script>
var divObj=document.getElementById("dv");
console.dir(divObj);
/*divObj.__proto__---->HTMLDivElement.prototype的__proto__
--->HTMLElement.prototype的__proto__---->Element.prototype的__proto__
---->Node.prototype的__proto__---->EventTarget.prototype的__proto__
---->Object.prototype沒有__proto__,因此,Object.prototype中的__proto__是null
*/
</script>
</body>
複製代碼
function A(name,age,sex){
this.name = name;
this.age = age;
this.sex = sex;
}
A.prototype.a = function(){
console.log("這是A的原型方法");
}
function B(name,age,sex,weight){
//借用構造函數
Person.call(this,age,sex);
this.weight = weight;
}
var b = new B("小B",18,"男","55kg");
console.log(b.name,b.age,b.sex,b.weight);//小B 18 男 55kg
console.log(b.a());//報錯
複製代碼
function A(name,age,sex){
this.name = name;
this.age = age;
this.sex = sex;
}
A.prototype.a = function(){
console.log("這是A的原型方法");
}
function B(name,age,sex,weight){
//借用構造函數:屬性值重複的問題
Person.call(this,age,sex);
this.weight = weight;
}
//改變原型指向---繼承
B.prototype = new A();//不傳值======
var b = new B("小B",18,"男","55kg");
console.log(b.name,b.age,b.sex,b.weight);//小B 18 男 55kg
b.a();//這是A的原型方法
複製代碼
function A(){
}
A.prototype.name = "小A";
A.prototype.age = 18;
A.prototype.a = function(){
console.log("這是A的原型方法");
}
var b = {};
for(var key in A.prototype){
b[key] = A.prototype[key];
}
console.log(b);//{name:"小A",age:18,a:f}
b.a();//這是A的原型方法
複製代碼
------------------------------------------------------記錄於 2019.4.24 JavaScript高級(二)bash