美文网首页简web
js面向对象

js面向对象

作者: 吴豆腐 | 来源:发表于2018-02-14 13:00 被阅读0次

面向对象思想主要是指实现封装、继承和多态

创建对象
1.工厂模式,传入必要的参数,返回一个特定的对象,缺点是每个对象都会生成一个实例方法

function createPerson(name, age, job) {
  var o = new Object()
  o.name = name
  o.age = age
  o.job = job
  o.sayName = function () {
    alert(this.name)
  }
  return o
}

2.构造函数模式

function Person(name, age, job) {
    this.name = name
    this.job = job
    this.age = age
    this.sayName = function () {
      alert(this.name)
    }
}
var person = new Person('jack', 24, 'job')

3.原型模式

image.png

理解原型对象:

创建函数的时候,会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向函数的原型对象。默认情况下,每个原型对象都会自动获得一个constructor属性,是一个指向prototype属性所在函数的指针。在创建对象实例后,实例内部会包含一个指针[[prototype]],指向构造函数的原型对象。实例与构造函数的连接 存在于实例与构造函数的原型对象之间,而不是实例与构造函数之间。

原型对象是一个默认包含constructor属性的对象,是函数的一个属性

每当代码读取对象的某个属性时,都会执行一次搜索,目标是具有给定名字的属性。搜索首先从对象实例本身开始。如果在实例中找到了具有给定名字的属性,则返回该属性的值;如果没有找到,则继续搜索指针指向的原型对象。

new 操作符的作用
用来创建用户自定义的对象
当代码 new Person(...) 执行时,会发生以下事情:

1.一个继承自 Foo.prototype 的新对象被创建。
2.使用指定的参数调用构造函数 Foo ,并将 this 绑定到新创建的对象。new Foo 等同于 new Foo(),也就是没有指定参数列表,Foo 不带任何参数调用的情况。
3.由构造函数返回的对象就是 new 表达式的结果。如果构造函数没有显式返回一个对象,则使用步骤1创建的对象。(一般情况下,构造函数不返回值,但是用户可以选择主动返回对象,来覆盖正常的对象创建步骤)

继承
prototype与[[prototype]](Object.getPrototypeOf())的区别
prototype是函数的一个属性,为一个默认包含constructor属性的对象
[[prototype]]是对象的原型链属性,是一个私有变量,用于属性方法的继承Object.getPrototypeOf(obj) === Object.prototype

相关文章

  • JS面向对象精要(二)_函数

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • JS面向对象精要(三)_理解对象

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • JS面向对象精要(四)_构造函数和原型对象

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • JS面向对象精要(五)_继承

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • js 面向对象和面向过程

    js 面向对象和面向过程

  • 面向对象OOP--JS

    作者:烨竹 JS面向对象简介 JS名言:万物皆对象 JS面向对象比PHP简单很多;因为JS中没有class关键字,...

  • JavaScript笔记(一)

    一、面向对象面向过程的区别 1、什么是js对象 js对象:属性和方法的集合,js所有数据都可以看成对象...

  • JS面向对象

    JS面向对象入门 1、面向对象语言概念面向对象语言主要包括 类、对象、封装、多肽。2、面向对象的编程思想面向过程思...

  • 2018-01-18

    js中的面向对象核心 js是基于对象的编程语言,在后面的学习中我们通过一种模式使其转化成为面向对象的语言。js面向...

  • 浅谈JS中的面向对象

    浅谈JS中的面向对象 本文主要说说本人在JS中对面向对象的理解。 计算机编程语言主要分为面向过程式编程和面向对象式...

网友评论

    本文标题:js面向对象

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