设为首页 加入收藏

TOP

原来你是这样的---原型和原型链(三)
2019-09-17 19:09:58 】 浏览:118
Tags:原来 这样 --- 原型
.log(
"ProvincePerson.原型.原型.原型 === Person.原型 --> ", pro3_person === pro1); console.log("ProvincePerson.原型.原型.原型.原型 === Object.原型 --> ", pro3_object === Object.prototype); console.log("Function.prototype === Function.__proto__ --> ", Function.prototype === pro_function); console.log("Object.__proto__ === Function.prototype --> ", pro_object === Function.prototype); console.log("************ 测试 end ************\n") /* 测试结果: ************* 原型链测试 start ********** 构造函数ProvincePerson继承自ChinaPerson, 构造函数ChinaPerson继承自Person, Person继承自Object Object --> Person --> ChinaPerson --> ProvincePerson Person.原型: {age: 18, run: ?, name: "炎黄子孙", methodPerson: ?, constructor: ?} ChinaPerson.原型: Person {constructor: ?, hero: "谭嗣同", write: ?} ProvincePerson.原型: ChinaPerson {constructor: ?, feature: "长沙臭豆腐", eat: ?, write: ?} ProvincePerson.原型.原型: Person {constructor: ?, hero: "谭嗣同", write: ?} ProvincePerson.原型.原型.原型: {age: 18, run: ?, name: "炎黄子孙", methodPerson: ?, constructor: ?} ProvincePerson.原型.原型.原型.原型: {constructor: ?, __defineGetter__: ?, __defineSetter__: ?, hasOwnProperty: ?, __lookupGetter__: ?, …} ProvincePerson.原型.原型 === ChinaPerson.原型 --> true ProvincePerson.原型.原型.原型 === Person.原型 --> true ProvincePerson.原型.原型.原型.原型 === Object.原型 --> true Function.prototype === Function.__proto__ --> true Object.__proto__ === Function.prototype --> true ************ 测试 end ************ */ View Code

   测试结果截图:

 

  再来一份对于多级继承和重写展示的测试代码:

//第二波测试,测试构造函数的继承 和 多态(重写从父级继承下来的属性或方法)
console.log("\n************* 继承和重写 start ************");
console.log(">>>>>>准备创建一个Person实例对象>>>>>");
var per = new Person("王大锤");  
per.methodPerson();
per.run();
console.log("*****Person实例对象测试结论:构造函数和原型有同名属性或方法,实例对象优先调用构造函数的属性或方法*****\n");

console.log("\n>>>>>准备创建一个ChinaPerson实例对象,ChinaPerson继承了Person >>>>>");
var chObj = new ChinaPerson("中国人", "黄色");
chObj.methodChinaPerson();
chObj.write();
chObj.methodPerson();
chObj.run();
console.log("*****ChinaPerson实例对象测试结论:继承自父类Person, 拥有父类所有对外的构造函数里面和原型里面的属性和方法\n");

console.log("\n>>>>>准备创建一个ProvincePerson实例对象,ProvincePerson继承了ChinaPerson>>>>>");
var proObj = new ProvincePerson("湖南人", "黄色", 888);
proObj.methodProvincePerson();
proObj.eat();
proObj.methodChinaPerson();
proObj.write();
proObj.methodPerson();
proObj.run();
console.log("*****ProvincePerson实例对象测试结论:拥有父级和父级的父级的所有对外的,包括构造函数里面和原型里面的属性和方法;另外也可以对父级属性或方法进行重写");
console.log("************  测试 end ************\n");

/*
测试结果打印日志:

************* 继承和重写 start ************
>>>>>>准备创建一个Person实例对象>>>>>
********Person 构造函数 初始化********
Person构造函数里面的方法methodPerson-->我的标签:王大锤
Person原型方法run-->name: 王大锤, age: 18, 欢快的run
*****Person实例对象测试结论:构造函数和原型有同名属性或方法,实例对象优先调用构造函数的属性或方法*****

>
首页 上一页 1 2 3 4 下一页 尾页 3/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇antd Bug记录 下一篇模块化开发

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目