由于某些原因,文章已经删除,打算迁移到别处,目前正在寻找更合适的平台。
请大家关注我的新公众号ar_indus,随后我会在公众号里推送新的博客地址。
后续计划的《react进阶系列》文章也会在新公众号中推送。
公众号二维码
ar_indus由于某些原因,文章已经删除,打算迁移到别处,目前正在寻找更合适的平台。
请大家关注我的新公众号ar_indus,随后我会在公众号里推送新的博客地址。
后续计划的《react进阶系列》文章也会在新公众号中推送。
公众号二维码
ar_indus本文标题:前端基础进阶(九):详解面向对象、构造函数、原型与原型链
本文链接:https://www.haomeiwen.com/subject/vjqdwttx.html
网友评论
Object.defineProperty(person, 'name', {
enumerable: false
})
var params_ = [];
for(var key in person) {
params_.push(key)
}
// 再次查看枚举结果
console.log(params_); // ['age']
这里,为什么不能枚举却还能获取到age。
var Student = function(name, age, grade) {
// 通过call方法还原Person构造函数中的所有处理逻辑
Student.call(Person, name, age);
this.grade = grade;
}
是不是应该Person.call(this,name,age)?
好晕啊,【这个对象】 我始终不明白是哪个对象。。。。。。高程上也是这样解释的,找来找去都没能弄明白,可否解惑
this.name = name;
this.age = age;
}
Person.prototype.getName = function() {
return this.name;
}
var p1 = new Person('tim', 10);
console.log('name' in p1); // true
这里原型对象里的this是指向了window,要不要应该用contructor将它指向构造函数,这样this才有用
这个解释错了,他不是不包含constructor属性,而是他的constuctor指向的是Object
可以把以下代码粘贴到控制面板查看下
function a(){}
a.prototype.__proto__ === Object.prototype
linkedinfo.co 是一个集合了各类优秀技术文章的站点,不展现全文,所有条目都附上作者与原文链接,读者最终都会进入到作者原文的站点。做 linkedinfo 的初衷是想方便自己且方便其他想学习的朋友,能更方便地找到自己感兴趣的技术文章。同时这也是一个我自己练习的过程,比如将正在学习的 Semantic Web 技术应用到 linkedinfo 来更好地连接不同的知识。
各位感兴趣的朋友可以去 https://linkedinfo.co 看看,非常希望能得到你们的意见与建议 (可在about 页面留言 https://linkedinfo.co/about )。
this.name=name;
this.age=age;
this.getAge=function () {
return this.age;
}
}
Person.prototype.getName = function() {
return this.name
};
function cPerson(name,age,job) {
this.job=job;
//Person.call(this,name,age);
this.__proto__=new Person(name,age);
}
//cPerson.prototype=new Person("PPP",18);
cp=new cPerson("Lucy",23,"actor");
console.log(cp.age);
console.log(cp.getName());
console.log(cp.job);
console.log(cp.getAge());
console.log(cp);
以上是咱的测试代码
输出结果为:
23
Lucy
actor
23
2、原型链中,Function.prototype.__proto__===Object.prototype,而不是Function.prototype.__proto__===Object;
console.log(p1.getName === p2.getName);
var person = {};
obj.name = "TOM";
obj.getName = function() {
return this.name;
}
// 也可以这样
var person = {
name: "TOM",
getName: function() {
return this.name;
}
}
发现一个小错误,这里的obj应该改成person
this.name = name;
this.age = age;
}
Person.prototype.getName = function() {
return this.name;
}
var p1 = new Person('tim', 10);
var p2 = new Person('jak', 22);
console.log(p1.getName === p2.getName); //这里你写错了