javascript - 原型问题继承
本文介绍了javascript - 原型问题继承的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
var obj = function(){
this.name=12;
this.get="年龄";
this.age=new Date();
}
Object.defineProperties(obj,{tilt:{
value:66,
configurable:true,
wirtable:true,
enumerable:false
},z:{
value:11,
configurable:false,
writable:false,
enumerable:false
}})
obj.prototype={
add:12,
sb:16
} //这个跟上面defineProperties都是添加属性,有什么区别?
var obj1 = new obj()
//1.obj是原型吗?
// 2.为什么 obj1不能访问definProperties创建的属性, 返回的是undefined,
//用obj,就能访问这些属性了
// 3.obj1 = new obj(); 这是叫obj1继承了obj的属性吗?
// 4.什么叫继承?什么叫原型啊?对原型这块,蒙圈了
//在此感谢回答的朋友们!!!
解决方案
Object.defineProperties可定限制屬性的編修等等..
1.obj.prototype才是原型
2.因為obj1的原型指obj.prototype,所以在obj向身上找不到add,是去obj.prototype找,而不是obj
3.這叫obj實例化創建obj1,js預設obj1的原型會指向obj.prototype,所以在obj1上找不到的屬性會去obj1上找
4.仔細看看樓上連結的內容吧...
原型
function Person(name) {
this.name = name;
}
Person.prototype.age = 20;
var john = new Person('john');
//經由john的原型,得到屬性
console.log(john.age);
因為有原型,才能做到繼承
function Person() {
this.age = 20;
this.setName = function(name) {
this.name = name;
};
}
function Studen(major) {
this.major = major;
}
//修改Studen的原型,始其繼承Person的屬性
Studen.prototype = new Person();
var john = new Studen('IT');
console.log(john.age);
john.setName('john');
console.log(john.name);
这篇关于javascript - 原型问题继承的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文