原型、原型链

  原型和原型链的了解和掌握

   在学习原型和原型链的时候有一点费劲,对我第一次学习来说有点绕。所以,今天来给大家说一下:

   原型是什么

   原型是一个对象,其他对象可以通过它实现属性继承。

   每一个对象都有一个属性叫prototype.

     这个prototype的属性值是一个对象,默认的只有一个叫constructor的属性,指向这个函数本身。

   原型方式

     该方式利用了对象的 prototype 属性,可以把它看成创建新对象所依赖的原型。

     这里,首先用空构造函数来设置类名。然后所有的属性和方法都被直接赋予 prototype 属性。

     代码如下:

 function Car(){

     }

     Car.prototype.color = ‘blue‘;

     Car.prototype.doors = 4;

     Car.prototype.showColor = function(){

      alert(this.color)

     }

       var oCar1 = new Car();

       var oCar2 = new Car();

      

  hasOwnProperty()

    hasOwnProperty()函数用于指示一个对象自身(不包括原型链)是否具有指定名称的属性。如果有,返回true,否则返回false。

    语法:object.hasOwnProperty( propertyName )

    hasOwnProperty()函数的返回值为Boolean类型。如果对象object具有名称为propertyName的属性,则返回true,否则返回false。

    此方法不会检查对象的原型链中是否存在该属性,该属性只有是对象本身的一个成员才会返回true。

  原型链

    当从一个对象那里调取属性或者方法时,如果该对象自身不存在这样的属性或方法,就会去自己关联的prototype对象那里寻找,如果prototype没有,就会去prototype关联的前辈prototype那里寻找,如果在没有就继续寻找.....知道prototype为undefined(Object的prototype就是undfined)从而形成了所谓的“原型链”。

  具体关系请看下图:

    

    原型和原型链就到这里,希望对大家有帮助!

时间: 2024-07-31 18:43:05

原型、原型链的相关文章

JavaScirpt中的原型,原型对象和原型链

一.什么是原型呢? 我们创建每一个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象.(即prototype即为函数的原型该原型指向的是一个原型对象) 二.什么是原型对象呢? 我们创建每一个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象(即原型对象).而这个对象的用途是包含 可以由特定类型的所有 实例 共享的属性和方法.(字面意思prototype就是通过调用构造函数而创建的实例对象的原型对象) 使用原型对象的好处是可以让所有的对象实例(实

面向对象(2 )构造函数 原型 原型链的理解

面向对象(2) 原型 原型链的理解 1.面向对象的目的就是生成对象object. 2.生成对象的方式 (1)单例模式(字面量定义)var obj={} (2)类的实例 var obj=new Object() (3)工厂模式 (4)构造函数 工厂模式和构造函数的区别? 工厂模式,生成的对象必须要返回,构造函数模式不用return,构造函数模式默认return旳是this,在构造函数内的this就是实例对象. 构造函数如果人为return的不是对象,直接忽略,如果人为return的是对象,就取代t

好程序员前端教程面对对象与原型原型链

好程序员前端教程面对对象与原型原型链一.面向对象:面向对象是一种程序开发的方法,它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的灵活性.重用性和扩展性.对象是把数据及对数据的操作方法放在一起,作为一个相互依存的整体.再说一下类与对象,类描述了一组有相同特性和相同行为的对象,具有相同属性和相同方法的对象的抽象就是类.即对象的抽象是类,类的实例是对象.在面向对象的编程中,把用类创建对象的过程称为实例化.面向过程与面向对象的区别在于面向过程是一种直接的编程方法,它是按照编程语言的思路考虑

JavaScript原型&原型链

原型&原型对象 先来一段简单的代码: function Fun(name) { this.name = name } var obj = new Fun('obj') JavaScript中的对象都有一个[[Prototype]]内置属性(即部分浏览器实现的__proto__属性),这是一个访问器属性,通过这个可以访问对象的[[Prototype]]:对象就是以这个属性为模板,来"继承"方法和属性. JavaScript中的方法都有一个prototype属性,有一个constr

原型原型链理解

由来 js是基于原型的语言,没有类的概念,为了描述联系对象和对象之间的关系就有了原型和原型链. 原型 原型(prototype)就是模板,本质也是一个对象,它定义了构造函数构造出来的对象可以继承该原型的属性和方法,用于表示对象之间的关系.每个函数都有一个prototype属性,这个属性指向的就是原型对象:实例上有一个__proto__指向它的构造函数的原型对象. 特点 prototype只有函数有,对象没有 原型链 定义 每个对象上拥有一个__proto__属性指向原型对象,对象以其原型为模板,

JavaScript ES5类 原型 原型链 组合、原型、寄生式继承

ES5类 原型  原型链 继承 JavaScript中,原型是相对于构造函数(类)的叫法(或者说概念),原型链是相对于构造函数(类)的实例对象的叫法. 对于JavaScript对象,如果在对象自身上找不到该属性,那么就会向上沿着原型链继续查找该属性 创建一个ES5类 在ES5中,类是由函数名首字母大写的函数,通过关键字new创建的. 类的构造函数就是函数自身 一般情况下,ES5类的原型对象prototype是自身构造函数,该类的实例化对象的原型链对象__proto__也是该构造函数,这二者指向同

JS原型+原型链+设计模式

JavaScript是一种基于对象的语言,JavaScript中的所有对象,都具有prototype属性.prototype属性返回对象的所有属性和方法,所有 JavaScript 内部对象都有只读的 prototype 属性,可以向其原型中动态添加属性和方法,但该对象不能被赋予不同的原型.但是自定义的对象可以被赋给新的原型. 对象分为函数对象和普通对象,区分:凡是通过 new Function() 创建的对象都是函数对象,其他的都是普通对象.(Object ,Function 是JS自带的函数

JavaScript 原型 原型链

一. 普通对象与函数对象 JavaScript 中,万物皆对象!但对象也是有区别的.分为普通对象和函数对象,Object .Function 是 JS 自带的函数对象.下面举例说明 var o1 = {}; var o2 =new Object(); var o3 = new f1(); function f1(){}; var f2 = function(){}; var f3 = new Function('str','console.log(str)'); console.log(type

JavaScript构造函数 原型 原型链

对象(object),台湾译作物件,是面向对象(Object Oriented)中的术语,既表示客观世界问题空间(Namespace)中的某个具体的事物,又表示软件系统解空间中的基本元素. 在软件系统中,对象具有唯一的标识符,对象包括属性(Properties)和方法(Methods),属性就是需要记忆的信息,方法就是对象能够提供的服务.在面向对象(Object Oriented)的软件中,对象(Object)是某一个类(Class)的实例(Instance). -- 维基百科 构造函数又叫工厂

原型,原型对象,原型链,构造函数,继承(一)

前言:javascript中 万物皆对象 , 但是对象是有区别的 分为普通对象(object)和函数对象(function): ①由以下三种形式创建的对象为函数对象: function fun1(){} var fun2 = function(){} var fun3 = new Function(); console.log(typeof fun1);//function console.log(typeof fun2);//function console.log(typeof fun3);