亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

JavaScript原型鏈淺談

標簽:
JavaScript

1.什么是原型链?

每个构造函数都有原型对象;每个对象都会有构造函数;每个构造函数的原型都是一个对象;那么这个原型对象也会有构造函数;那么这个原型对象的构造函数也会有原型对象;这样就会形成一个链式的结构,称为原型链。

2.原型链结构的基本形式

 function Person(name){            this.name = name;
        }        var p = new Person();        //p ---> Person.prototype --->Object.prototype---->null

3.属性搜索原则:

a.当访问一个对象的成员的时候,会现在自身找有没有,如果找到直接使用,
b.如果没有找到,则去当前对象的原型对象中去查找,如果找到了直接使用,
c.如果没有找到,继续找原型对象的原型对象,如果找到了,直接使用
d.如果没有找到,则继续向上查找,直到Object.prototype,如果还是没有,就报错

4.原型继承概念

通过修改原型链结构实现的继承,就叫做原型继承。

5.复杂的原型链

//动物--->人---->老师---->坏老师

        function Animal(){            this.gender = "male";
        }

        Human.prototype = new Animal();
        Human.prototype.constructor = Human;        function Human(){            this.actionWay = "走路";
        }

        Teacher.prototype = new Human();
        Teacher.prototype.constructor = Teacher;        function Teacher(){            this.skill = "教书";
        }

        BadTeacher.prototype = new Teacher();
        BadTeacher.prototype.constructor = BadTeacher;        function BadTeacher(){            this.name = "吕超";
        }        var t = new BadTeacher();        console.log(t);

6.Object.prototype的成员

①.constructor:
原型对象内的一个属性,指向该原型对象相关联的构造函数。
②.hasOwnProperty:
一个方法,用来判断对象本身(不包含原型)是否拥有某个属性。

function Person(){          this.name = "王九"
    }
      Person.prototype.name = "张三";       var p = new Person();      console.log(p.name);       console.log(p.hasOwnProperty("__proto__"));

③.propertyIsEnumerable:
a. 判断属性是否属于对象本身
b. 判断属性是否可以被遍历

 console.log(p.propertyIsEnumerable("name"));

④.将对象转换成字符串

var o = {};       console.log(o.toString());       console.log(o.toLocaleString());      var now = new Date();      console.log(now.toString());      console.log(now.toLocaleString());

⑤.valueOf:
获取当前对象的值

       function Person(){

           }       var p = new Person();        //在对象参与运算的时候
        //1.默认的会先去调用对象的valueOf方法,
        //2.如果valueOf获取到的值,无法进行运算 ,就去去调用p的toString方法  最终做的就是字符串拼接的工作
        console.log( 1 + p);

⑥ _proto_:
a.原型对象对象中的属性
b.可以使用 对象._proto_去访问原型对象



作者:费莱姆
链接:https://www.jianshu.com/p/a52748eb573a


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消