美文网首页
js对象原型、原型链

js对象原型、原型链

作者: angelwgh | 来源:发表于2016-11-24 19:56 被阅读0次

title: js对象原型、原型链
date: 2016-11-24 18:54:08
tags: javascript
categories:

  • javascript

设置对象原型

Object.creat

Object.create() 方法创建一个拥有指定原型和若干个指定属性的对象。

Object.create(proto, [ propertiesObject ])
  • 参数
    • proto
      • 一个对象,作为新创建对象的原型。
    • propertiesObject
      • 可选。该参数对象是一组属性与值,该对象的属性名称将是新创建的对象的属性名称,值是属性描述符(这些属性描述符的结构与Object.defineProperties()的第二个参数一样)。注意:该参数对象不能是 undefined,另外只有该对象中自身拥有的可枚举的属性才有效,也就是说该对象的原型链上属性是无效的。
  • 抛出异常
    • 如果 proto 参数不是 null 或一个对象值,则抛出一个 TypeError 异常。
  //定义原型对象
var landRover = {
    name: 'landRover',
    start:function(){
        console.log('%s start',this.logo)
    },
    run:function(){
        console.log('%s running',this.logo)
    },
    stop:function(){
        console.log('%s stop',this.logo)
    }
}

  //使用原型构造新的对象
var landWind = Object.create(landRover);
landWind.logo = "landWind";

var landCruiser = Object.create(landRover);
landCruiser.logo = "landCruiser";

构造函数

  • 构造函数使用prototype设置原型
  • 使用new关键字创建对象
Car的构造函数
function Car(logo){
    this.log = logo || 'unknow name';
}

//设置Car的prototype属性
Car.prototype = {
    start:function(){
        console.log('%s start',this.logo)
    },
    run:function(){
        console.log('%s running',this.logo)
    },
    stop:function(){
        console.log('%s stop',this.logo)
    }
}

//创建对象
var landWind = new Car('landWind');
var landRover = new Car('landRover');

原型链

//Car的构造函数
function Car(logo){
    this.log = logo || 'unknow name';
}

//设置Car的prototype属性
Car.prototype = {
    start:function(){
        console.log('%s start',this.logo)
    },
    run:function(){
        console.log('%s running',this.logo)
    },
    stop:function(){
        console.log('%s stop',this.logo)
    }
}

// landRover构造函数
function LandRover(serialno){
    this.serialNumber = serialno
}

// 设置LandRover的prototype属性
LandRover.prototype = new Car('landRover');

landRover1 = new landRover(10001)

landRover1的原型指向Car的实例,这个实例的原型指向Car的prototype,Car.prototype的原型又指向Object.prototype,这一系列构建了一条原型链

而构造函数LandRover和Car作为函数对象,其对象原型(proto)指向Function.prototype,Function.prototype指向Object.prototype

相关文章

  • 廖雪峰JS小记

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

  • 2022前端高频面试题

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

  • JS原型链

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

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

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

  • js基础(三)

    js基础 原型链和原型对象 ... ... js没有继承原型对象prototype通常用来添加公共的属性或行为且只...

  • 原型和原型链的简单理解

    原型 在JS中原型就是prototype对象,用来表示类型之间的关系。 原型链 JS中对象和对象之间是有联系的,通...

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

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

  • Js面向对象

    一、Js面向对象 二、Js原型及原型链 1、原型 JavaScript 的每个对象都继承另一个父级对象,父级对象称...

  • 1.web前端基础储备之—js的面向对象风格以及原型和原型链

    javascript是面向对象风格,基于原型的语言。 目标:了解js面向对象和原型原型链的关系 面向对象(OOP)...

  • JavaScript原型链

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

网友评论

      本文标题:js对象原型、原型链

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