美文网首页
js原型链

js原型链

作者: gtt21 | 来源:发表于2017-07-20 21:09 被阅读0次

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去访问原型对象

相关文章

  • 廖雪峰JS小记

    (function(){})() 原型,原型链 浅谈Js原型的理解JS 原型与原型链终极详解 对象 对象:一种无序...

  • JS的__proto__和prototype

    最近在回顾JS的原型和原型链的知识,熟悉JS的同学都知道JS的继承是靠原型链实现的,那跟原型链相关的属性__pro...

  • Javascript(三)之原型继承理解

    进阶路线 3 原型继承 3.1 优秀文章 最详尽的 JS 原型与原型链终极详解 一 最详尽的 JS 原型与原型链终...

  • 从实现角度分析js原型链

    从实现角度分析js原型链 欢迎来我的博客阅读:《从实现角度分析js原型链》 网上介绍原型链的优质文章已经有很多了,...

  • JS原型链

    1什么是JS原型链? 通过__proto__属性将对象与原型对象进行连接. 1.1 JS原型链的作用? 组成的一个...

  • 关于JS中的原型和原型链

    目录 关于js 对象和原型 原型链 基于原型链的继承 参考资料ECMAScript 6 入门JavaScript原...

  • js_继承及原型链等(四)

    js_继承及原型链等(三) 1. 继承 依赖于原型链来完成的继承 发生在对象与对象之间 原型链,如下: ==原型链...

  • 2022前端高频面试题

    JS相关 1.原型和原型链是什么 原型和原型链都是来源于对象而服务于对象的概念js中引用类型都是对象,对象就是属性...

  • JavaScript原型链

    js原型链 原型链是JS面向对象的基础非常重要 所有对象只有__proto__属性,而函数具有prototype属...

  • web前端面试之js继承与原型链(码动未来)

    web前端面试之js继承与原型链(码动未来) 3.2.1、JavaScript原型,原型链 ? 有什么特点? 每个...

网友评论

      本文标题:js原型链

      本文链接:https://www.haomeiwen.com/subject/wiijkxtx.html