精华内容
下载资源
问答
  • JS原型

    2020-03-11 00:11:06
    JS原型 前端面试题永远少不了js的原型和原型链。解释起来有点拗口,可以用一张图来讲解: 一、Function和Object 首先说一下,js中自带两个函数Object和Function,Object继承自己,Funtion继承自己,Object和...

    JS原型

    前端面试题永远少不了js的原型和原型链。解释起来有点拗口,可以用一张图来讲解:
    在这里插入图片描述

    一、Function和Object

    首先说一下,js中自带两个函数Object和Function,Object继承自己,Funtion继承自己,Object和Function互相是继承对方,也就是说Object和Function都既是函数也是对象。

    Function instanceof Object;//true
    Object instanceof Function;//true
    

    也就是说Object是Function的实例,Function是自己的实例

    二、普通对象和普通函数

    js中万物皆对象,函数是对象,函数创建出来的实例也是对象,我们将函数成为函数对象,将实例成为普通对象。

    注意函数对象本身又是Function的实例

    function Sample(){};//Sample是一个函数对象
    var s=new Sample();//s是一个普通对象
    
    //function Sample(){}等同于
    var Sample=new Function();//所以Sample又是Function的实例
    
    

    三、隐式原型和显示原型

    • 每个对象都有一个名为__proto__的内部属性(隐式原型),它指向所对应构造函数的原型对象
    • 每个函数对象都有一个prototype的属性(显示原型)prototype与__proto__都指向构造函数的原型对象,原型对象下面又有一个constructor属性,指向这个函数对象

    四、原型链

    js中,每个对象都会在内部生成一个__proto__属性,当我们访问一个对象属性时,如果这个对象不存在就会去__proto__ 指向的对象里面找,一层一层找下去,这就是javascript原型链的概念。

    JS中所有的东西都是对象,所有的东西都由Object衍生而来, 即所有东西原型链的终点指向null

    五、继承

    js中的普通对象是由构造函数(即函数对象)new出来的,这个对象产生于原型却不等于原型;这个普通对象是如何与原型产生联系的呢?就是通过这个叫__proto__完成的。

    function method(){}
    var m = new method();
    m===m.prototype;//false
    
    m.__proto__====method.prototype;//true
    

    参考:http://baijiahao.baidu.com/s?id=1585354841830289519&wfr=spider&for=pc

    https://www.jb51.net/article/123976.htm

    展开全文
  • js原型

    2018-02-26 16:32:48
    最近两天在看js原型,特地整理下,以后常看看 function Person() {} Person.prototype.name = "zhangsan"; var p1 = new Person(); console.log( p1.constructor ); //function Person() {} console.log( p1....

    最近两天在看js原型,特地整理下,以后常看看

    function Person() {}
    
    Person.prototype.name = "zhangsan";
    
    var p1 = new Person();
    
    console.log( p1.constructor );		//function Person() {}
    
    console.log( p1.constructor.prototype );		//{"name": "zhangsan"}
    
    console.log( p1.__proto__ );		//{"name": "zhangsan"}
    
    console.log('//----------------分割线-----------------------')
    
    console.log( Person.constructor );		//function Function() {}
    
    console.log( Person.__proto__ );		//function () {}
    
    console.log( Person.prototype );		//{"name": "zhangsan"}
    
    console.log( Person.prototype.constructor );		//function Person() {}
    
    console.log( Person.prototype.constructor.prototype );		//{"name": "zhangsan"}
    
    console.log( Person.prototype.__proto__ );		//Object.prototype
    
    console.log('//----------------分割线--------------------')
    
    console.log( Object.constructor );		//function Function() {}
    
    console.log( Object.prototype );		//Object.prototype
    
    console.log( Object.prototype.__proto__ );		//null,这个需要记忆下
    
    console.log( Object.__proto__ );		//function () {}
    
    console.log( Object.prototype.constructor );		//function Object() {}
    
    console.log('//----------------分割线--------------------')
    
    console.log( Function.constructor );		//function Function() {}
    
    console.log( Function.prototype );		//function () {}
    
    console.log( Function.__proto__ );		//function () {}
    在这个网址上看的,作者写的很细致用心,推荐对原型了解不是很深的同学看看,内容很多哦羡慕

    展开全文
  • jS原型

    千次阅读 2017-11-28 11:15:52
    js中万物皆对象,因此原型也是对象,可以通过原型实现对象属性的继承。什么是原型对象? “我们创建的每个函数都有一个prototype(原型)属性(除了Function.bind()返回的函数),这个属性是一个指针,指向一个对象,...

    原型

    理解原型之前我们要知道什么是原型?js中万物皆对象,因此原型也是对象,可以通过原型实现对象属性的继承。

    什么是原型对象?
    “我们创建的每个函数都有一个prototype(原型)属性(除了Function.bind()返回的函数),这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。”
    –摘自人民邮电出版社出版的Nicholas C.Zakas著的《JavaScript高级程序设计》(第2版)
    因此,prototype(原型)属性指向的对象就是原型对象。

    然后咱们需要了解这几个属性

    constructor:是不影响任何JavaScript的内部属性。一般来说对象的constructor属性指向其构造函数,但是._proto_=== .constructor.prototype是不完全正确的。

    _proto_(隐式原型)与prototype(显式原型):几乎任何对象有一个[[prototype]]属性,也就是现在的_proto_,在标准中,这是一个隐藏属性。该属性指向的是创建这个对象的函数(constructor)的原型(prototype)

    有三种创建对象的方法

    1、通过对象字面量构造出来的对象

    var person1 = {
        name: 'wtc',
        sex: 'man'
    };

    这样子构造出的对象,其_proto_指向Object.prototype

    2、通过构造函数构造出来的对象

    function Person(){
        name: 'wtc',
        sex: 'man'
    }
    var person1 = new Person();

    通过new操作符实例化的函数就是构造函数。由构造函数构造的对象,其_proto_指向其构造函数的prototype属性指向的对象。每个函数都有一个prototype属性(除了Function.bind()返回的函数),其所指向的对象带有constructor属性,这一属性指向函数自身。(在本例中,person1的_proto_指向Person.prototype)

    3、通过函数Object.create()创建对象

    var person1 = {
       name: 'wtc',
       sex: 'man'
    };
    var person2 = Object.create(person1);

    通过这种方式创建出来的对象 person2._proto_ 指向的就是person1对象

    在ES5中我们可以通过Object.getPrototypeOf获取一个对象的_proto_ ,在ES6中我们可以通过Object.setPrototypeOf设置一个对象的_proto_

    instanceof:该 操作符的内部实现机制和隐式原型、显式原型有直接的关系。instanceof的左值一般是一个对象,右值一般是一个构造函数,用来判断左值是否是右值的实例。它的内部实现原理是这样的:

    // L instanceof R 
    //通过判断
     L.__proto__.__proto__ ..... === R.prototype
    //最终返回true or false

    就是沿着对象L的_proto_一直寻找到原型链末端,直到等于R.prototype为止。

    Function instanceof Object // true 
    Object instanceof Function // true 
    Function instanceof Function //true
    Object instanceof Object // true
    Number instanceof Number //false

    最后贴上一张经典的图(理解的还不够深,有其他见解的欢迎留言)

    这里写图片描述

    展开全文
  • 本文主要介绍了js原型对象和原型链的相关知识。具有很好的参考价值,下面跟着小编一起来看下吧
  • 主要和大家一起深入理解JS原型与原型链,原型是JavaScript中一个比较难理解的概念,本文为大家解决这个难题,感兴趣的小伙伴们可以参考一下
  • 主要介绍了JS原型和原型链原理与用法,结合实例形式详细分析了js原型和原型链概念、原理、使用方法及相关操作注意事项,需要的朋友可以参考下
  • 主要为大家详细介绍了JS原型对象和原型链,感兴趣的小伙伴们可以参考一下
  • js原型对象

    2020-11-11 09:32:05
  • 主要介绍了图解JS原型和原型链实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • Js原型继承
  • JS原型和原型链

    2021-03-06 21:58:04
    JS原型和原型链一、prototype和__proto__的概念1.显示原型(prototype )2.隐式原型(__proto __)3.例题二、原型链图1.构造函数2._proto_与prototype3.person → Person → Object4.完整原型链 一、prototype和__...
  • js原型原型链复习

    2019-11-13 16:39:05
    js原型原型链复习原型链基本概念举例原型和原型链有那些作用?1.判断负责复杂数据的数据类型2.实现属性和方法的继承3.遇到负责类的时候可以用来判断是否是我们需要的类 原型链基本概念 所有的引用类型(数组、函数、...
  • js原型和原型链

    2021-03-10 15:41:07
    js原型和原型链1、原型2、constructor3、原型链4、继承 1、原型 在JavaScript中,原型也是一个对象,原型的作用,则是实现对象的继承。在js的所有函数对象中,都存在一个属性prototype,该属性对应当前对象的原型。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,212
精华内容 8,884
关键字:

js原型