美文网首页
实例对象与new命令

实例对象与new命令

作者: Jason_Shu | 来源:发表于2018-10-08 22:26 被阅读0次

对象是一个容器,封装了属性和方法。
属性是对象的状态,方法是对象的行为。比如,我们把动物抽象为animal对象,动物的身高、体重等等,就是动物的「属性」,奔跑、飞翔、觅食等等,就是动物的「方法」。

  1. 构造函数
    构造函数就是对象的模板。它专门用于生成实例对象的函数,一个构造函数可以生成多个实例对象。
var Animal = function() {
  this.height = 100;
  this.eat = function() {
    console.log("eat!!!!");
  }
};

构造函数的特点有两个:
(1) 函数体内必须使用「this」关键字,代表了所要生成的实例对象。
(2) 生成实例对象的时候,必须使用「new」。

  1. 基本用法
var dog = new Animal();
dog.height;  // 100

一般使用new 构造函数来创建一个实例对象,那如果声明的时候没有加new呢?

var dog =  Animal();

dog;  // undefined
height;  // 100

此时构造函数Animal里面的this指向了顶层对象(window),所以直接输出height是100。

  1. new命令的基本原理

使用「new」命令时,会按以下步骤执行:
(1)创建一个空对象,作为将要返回的对象实例。
(2)将这个空对象的原型,指向构造函数的「prototype」属性。
(3)将这个空对象赋值给构造函数内的「this」关键字。
(4)开始执行构造函数内的代码。

如果构造函数有「return」语句,而且「return」语句后面还跟着一个对象,那么「new」后会返回「return」语句后的对象。否则,就不会例会「return」语句,直接返回「this」对象。

var Animal = function() {
  this.height = 100;
  this.eat = function() {
    console.log("eat!!!!");
  }
  return 100;
};

(new Animal() === 100);  // false
var Animal = function() {
  this.height = 100;
  this.eat = function() {
    console.log("eat!!!!");
  }
  return {width: 100};
};

(new Animal()).width;  // 100

上面代码构造函数return了一个新对象,则会返回这个对象,不会返回this对象。

相关文章

  • 阮一峰JS教程读后感(九)new命令、this关键字

    一、实例对象与new命令 About 面向对象编程(Object Oriented Programming,缩写为...

  • 实例对象与new命令

    对象是一个容器,封装了属性和方法。属性是对象的状态,方法是对象的行为。比如,我们把动物抽象为animal对象,动物...

  • 实例对象与new命令

    1.对象是什么 oop是目前主流的编程范式,对象可以复用,通过继承机制还可以定制,因此面向对象编程具有灵活、代码可...

  • 实例对象与 new 命令

    1. 对象是什么 面向对象编程(Object Oriented Programming,缩写为 OOP)是目前主流...

  • 面向对象编程(基础篇)

    一 实例对象与new命令 1. 什么是对象? 面向对象编程(Object Oriented Programming...

  • JS继承体系

    一、原型与实例 原型是一个对象实例是用new来从原型对象生成的一个实例对象new命令后面跟的不是类,而是构造函数。...

  • JS面向对象

    面向对象编程 实例对象与 new 命令 JavaScript 语言具有很强的面向对象编程能力,这里介绍 JavaS...

  • new 命令的作用

    new 命令的作用,就是执行构造函数,返回一个实例对象 上面代码通过new命令,让构造函数Person生成一个实例...

  • JS面向对象—实例对象与 new 命令

    对象是什么 面向对象编程(Object Oriented Programming,缩写为 OOP)是目前主流的编程...

  • JS-实例对象与 new 命令

    参考文章:实例对象与 new 命令 1.对象是什么 对象是一个容器,封装了属性(property)和方法(meth...

网友评论

      本文标题:实例对象与new命令

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