首页 > 其他分享 >11原型与继承

11原型与继承

时间:2022-08-20 19:22:43浏览次数:44  
标签:11 __ console log 继承 对象 原型 prototype

  1 <!doctype html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <meta name="viewport"
  6           content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8     <title>11原型与继承</title>
  9 </head>
 10 <body>
 11 
 12 <script>
 13 
 14     /*11.1 原型的初识*/
 15     /*什么是原型对象:
 16     (1) 每个对象都有一个原型prototype对象,通过函数创建的对象也将拥有这个原型对象。原型是一个指向对象的指针。
 17     (2) 可以将原型理解为对象的父亲,对象从原型对象继承来属性。
 18     (3) 原型就是对象除了是某个对象的父母外没有什么特别之处。
 19     (4) 所有函数的原型默认是Object的实例,所以可以使用toString/toValues/isPrototypeOf等方法的原因。
 20     (5) 使用原型对象为多个对象共享属性或方法。
 21     (6) 如果对象本身不存在属性或方法将到原型上查找。
 22     (7) 使用原型可以解决,通过构建函数创建对象时复制多个函数造成的内存占用问题。
 23     (8) 原型包含constructor属性,指向构造函数。
 24     (9) 对象包含__proto__指向他的原型对象。
 25     */
 26 
 27     // let lc = {};
 28     // let chang = {};
 29     // // 判断两个对象的原型是否是同一个
 30     // console.log(Object.getPrototypeOf(lc) === Object.getPrototypeOf(chang)); // true
 31 
 32     /*11.2 没有原型的对象*/
 33     /*11.2.1 有原型的对象*/
 34     // let web = {name: "baidu.com"};
 35     // console.log(web);
 36     // /*
 37     // {name: 'baidu.com'}
 38     // name: "baidu.com"
 39     // [[Prototype]]: Object
 40     // */
 41     // console.log(web.hasOwnProperty("name")); // true
 42     //
 43     // /*11.2.2 无原型的对象*/
 44     // // 完全数据字典对象
 45     // let lc = "123";
 46     // console.log(lc); // 123
 47     // let chang = Object.create(null, {
 48     //     city: "shangHai",
 49     // });
 50     // console.log(chang.hasOwnProperty("city")); // 报错
 51 
 52     /*11.3 原型方法与对象方法优先级*/
 53     // 对象方法优先级大于对象原型方法
 54     // let web = {
 55     //     render() {
 56     //       console.log("对象方法render");
 57     //     },
 58     // };
 59     // // 往对象原型中添加方法
 60     // web.__proto__.render = function(){
 61     //     console.log("对象原型方法render");
 62     // };
 63     // // 打印对象的原型
 64     // console.dir(web.__proto__);
 65     // console.log(web);
 66     // /*
 67     // {render: ƒ}
 68     //   render: ƒ render()
 69     //   [[Prototype]]: Object
 70     //     render: ƒ ()
 71     // */
 72     // // 调用render方法f
 73     // web.render(); // 对象方法render
 74 
 75     /*11.4 函数拥有多个长辈*/
 76     // 函数也是对象,有__proto__和prototype两个原型。
 77     // 函数当对象使用时,使用__proto__原型;函数当构造函数使用时(实例化对象)使用prototype原型。
 78     // let User = function () {};
 79     // console.dir(User);
 80     // // 为函数的prototype原型添加方法
 81     // User.prototype.show = function () {
 82     //     console.log("show");
 83     // };
 84     // let hd = new User();
 85     // hd.show();  // show
 86     // console.log(User.prototype === hd.__proto__); // true
 87 
 88     /*11.5 原型关系详解与属性继承实例*/
 89     // 为Object函数中的prototype原型添加方法
 90     // Object.prototype.show = function () {
 91     //     console.log("webShow");
 92     // };
 93     // function User() {}
 94     // console.dir(User); // ƒ User()
 95     // console.log(User.prototype.__proto__ === User.__proto__.__proto__); // true
 96     // console.log(Object.prototype.__proto__); // null
 97     // let hd = new User();
 98     // hd.show();   // webShow
 99     // User.show(); // webShow
100 
101     /*11.6 系统构造函数的原型体现*/
102     // const obj = {}//new Object
103     // console.log(obj.__proto__ == Object.prototype)//true
104     // const arr = []//new Array
105     // console.log(arr.__proto__ == Array.prototype)//true
106     // const str = ''//new String
107     // console.log(str.__proto__ == String.prototype)//true
108     // const bool = false//new Boolean
109     // console.log(bool.__proto__ == Boolean.prototype)//true
110     // const fun = ()=> {} //new Function
111     // console.log(fun.__proto__ == Function.prototype)//true
112     // const reg = /\d+/g //new RegExp
113     // console.log(reg.__proto__ == RegExp.prototype)//true
114 
115     /*11.7 自定义对象的原型设置*/
116     // let web = {name: "baidu.com"};
117     // let parent = {name: "parent"};
118     // console.log(web.__proto__ === Object.prototype); // true
119     // // 设置web对象的父级原型是parent对象
120     // Object.setPrototypeOf(web, parent);
121     // console.log(web);
122     // // 查看web对象的父级原型
123     // console.log(Object.getPrototypeOf(web));
124 
125 </script>
126 </body>
127 </html>
/*11.5 原型关系详解与属性继承实例*/

 

标签:11,__,console,log,继承,对象,原型,prototype
From: https://www.cnblogs.com/LiuChang-blog/p/16608448.html

相关文章

  • 原型链、继承、构造函数的构建
    构造函数构建es6的形式classclassPerson{ constructor(){//构造器 this.name='jack' }}es3的形式functionfunctionPerson(){ this.name='jack'}使......
  • 面向对象的回顾以及原型讲解
    面向对象回顾核心概念:万物皆对象(顶层对象Object)抽取行为作为方法抽取名词作为属性俩种构建对象的方式构造函数构建es6的形式classclassPerson{constructor(......
  • 原型的认识
    概述:所有的函数都拥有一个属性这个属性称为prototype他是一个对象空间(里面就可以存放对应的数据)他被称为显式原型(prototype)示例functionPerson(){}console.log(Pe......
  • CM311-1a(S905L3系列)玩转桌面
    那安装了ambian后,玩转桌面(安装GUI桌面环境)有没有可能呢?那肯定啊!那桌面有什么用?当然有用,多一种玩法,可以写写代码,上网冲浪,学习linux语法什么的。而且单主机只要40左右,想想看......
  • javascript:null和undefined的区别(chrome 104.0.5112.101)
    一,js代码:<html><head><metacharset="utf-8"/><title>测试</title></head><body><buttononclick="test()">测试</button><script>functiontest......
  • centos8下安装gcc11
    最近的云服务器使用的centos8,c以前编译器对c++20的新特性支持的较少,当前最新版的gcc对c++20的支持还是可以的,于是准备体验一下,首要就是升级gccgcc官网:https://gcc.gnu.......
  • SIC 模块FF08MR12W1MA1B11ABPSA1 150A 1200V /FF08MR12W1MA1B11概述
    概述FF08MR12W1MA1B111200VCoolSiC™模块是碳化硅(SiC)MOSFET模块,具有较高的效率和系统灵活性。这些模块采用近阈值电路(NTC)和PressFIT触点技术。该款CoolSiC模块具......
  • js的原型
    prototype概述:所有的函数都拥有一个属性这个属性称为prototype他是一个对象空间(里面就可以存放对应的数据)他被称为显式原型     从上述代码大家可以看到对......
  • QQ国际版V8.0.11.4530
    简洁,快速,无广告,好用!预览图下载地址QQ国际版.apk......
  • 18js面向对象回顾及原型讲解
    面向对象回顾核心概念:万物皆对象(顶层对象Object)抽取名词作为属性抽取行为作为方法俩种构建对象的方式构造函数构建es6的形式classclassPerson{constructor(......