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

js原型、原型链

作者: fanison | 来源:发表于2019-12-11 22:51 被阅读0次

为什么需要对象分类?

  • 类型是对 JS 中数据的分类
    JS 中的类型有:数字、字符串、布尔、符号Symbol、null、undefined、对象
  • 类是对 JS 中对象的分类
    JS 中的类有:数组 Array、函数 Function 、Date、RegExp等

new操作符

创建new X()时做了什么?

  • 自动创建空对象
  • 自动将空对象关联原型,原型地址指定为X.prototype(即将 X.prototype保存的地址复制到 空对象.__proto__里)
  • 自动将空对象作为this关键字运行构造函数
  • 自动return this

构造函数X

  • X函数本身负责给对象本身添加属性
  • X.prototype对象负责保存对象的共用属性

JS 构造对象方式

代码规范

  • 大小写
    所有构造函数(专门用于创建对象的函数)首字母大写
    所有被构造出来的对象,首字母小写
  • 词性
    new后面的函数,使用名词形式(new Person()new Object())
    其他函数,一般使用动词开头(createSquare()createElement('div'))

方式一:用 class

Example:

class Square{
  static x = 1
  width = 0
  constructor(width){
    this.width = width
  }
  getArea(){
    return this.width * this.width
  }
  get length(){ //只读属性
    return this.width * 4
  }
}
let square = new Square(5)
square.width
square.getArea()
square.length()

方式二:用构造函数+prototype

自己定义构造函数Rect,函数里给this加属性
Rect自动创建prototype属性和对应的对象 #207
在Person.prototype #207 上面加属性
用new Rect() 创建对象 react
new会将Rect的原型 __p设为 #207

function Rect(width, height){
  this.width = width
  this.height = height
}
Rect.prototype.getArea = function(){
  return this.width * this.height
}
Rect.prototype.getLength = function(){
  return (this.width + this.height) * 2
}
let react = new Rect(4,5)
rect.width
rect.height
rect.getArea()
rect.getLength()

原型

let obj = new Object()     //原型 Object.prototype
let arr =new Array()       //原型 Array.prototype
let square = new Squrae()  //原型 Square.prototype
let fn = new Function()    //原型 Function.prototype

对象.proto === 其构造函数.prototype

Test1: let x = {} x的原型是什么
x.__proto__ = Object.prototype

Test2:
Object.prototype的构造函数: 无
Object.prototype的原型: null
Object.prototype.__proto__的原型 : null

Test3:
window是谁构造的?
Window()
window.Object是谁构造的?
window.Function
window.Function是谁构造的?
window.Function

Test4:多选题



JS公式:

根公理:

函数公理:


Test

相关文章

  • 廖雪峰JS小记

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

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

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

  • JS的__proto__和prototype

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

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

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

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

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

  • JS原型链

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

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

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

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

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

  • 2022前端高频面试题

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

  • 再来看一次JS继承

    原型链继承 理解原型链的概念 用一张图来理解原型链再合适不过了。 总结概括JS红宝书上对原型链的概念:每个函数都有...

网友评论

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

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