美文网首页
JS中的对象

JS中的对象

作者: GoFzy | 来源:发表于2019-03-14 16:35 被阅读0次

一、调用系统构造函数与字面量方式

  我们可以直接通过 new Object() 创建:

var person = new Object(); //实例化对象
person.name = 'Jack';//添加属性
person.age = 18

person.sayName = function () { //添加方法
  console.log(this.name)
}

  每次创建通过 new Object() 比较麻烦,所以可以通过它的简写形式对象字面量来创建:

var person = {
  name: 'Jack',
  age: 18,
  sayName: function () {
    console.log(this.name)
  }
}

二、工厂模式创建对象

  上面两种写法本身没有问题,但是假如我们要生成两个 甚至多个person 实例对象呢?每次都重复定义会显得代码冗余,重复性太高。这里有一个简单的改进方法:工厂模式

function createPerson (name, age) {
  return {
    name: name,
    age: age,
    sayName: function () {
      console.log(this.name)
    }
  }
}

  然后直接调用生成实例对象:

var p1 = createPerson('Jack', 18);
var p2 = createPerson('Mike', 18);

  工厂模式虽然能解决一次性多次创建对象的问题,但每次创建的对象都是系统自定义对象Object,即console.log(实例对象 instanceof Object)返回true,这样在实际应用过程中无法分辨对象具体属于哪个类型。

三、自定义构造函数创建对象

  为了解决工厂模式存在的问题,这里引入了自定义构造函数

function Person (name, age) {
  this.name = name
  this.age = age
  this.sayName = function () {
    console.log(this.name)
  }
}

四、对象在内存中的存储

4.1 js中简单数据类型的存储--值传递

  js中的简单数据类型如string,number,boolean都是存于栈中


简单数据类型

4.2 js中复杂数据类型的存储--引用(地址)传递

  js中的复杂数据类型如Object(包括Function,Array等),它们的内容都是存于堆,而栈中存的是堆的地址,因此也叫地址传递:

复杂数据类型
  tips:
  ①内存中的栈:自动分配内存空间,系统会自动释放,用于存放基本类型数据的值和引用类型数据的地址
  ②内存中的堆:动态分配内存空间,大小不定,不会自动释放,用于存放引用类型数据的值

相关文章

  • JS 对象

    JS对象 JS对象的意义和声明 在JS中,对象(OBJECT)是JS语言的核心概念,也是最重要的数据类型。在JS中...

  • js 对象和jquery对象的比较

    1、js 对象和jquery对象的区别 jquery对象是js中的new Object()生成的普通对象 2、js...

  • jQuery前端框架--笔记

    1,JS对象和jQuery对象的区别 jQuery就是JS中的new Object生成的普通对象。 2,JS对象和...

  • JavaScript中的Object对象

    JavaScript中的Object对象,是JS中所有对象的基类,也就是说JS中的所有对象都是由Object对象衍...

  • js中的this对象

    js中的this总会指向一个对象,具体是哪个对象就由运行时函数的执行环境而决定了。在实际应用中,this的常用指向...

  • js中的对象

    js中的对象理解和使用起来都很简单,并且很频繁的使用。但是,总有细节,是我们可能会忽略的、或者是拿捏不定的参考链接...

  • js中的对象

    1. 属性的查看 查看一个对象的所有属性,可以使用Object.keys()方法 2. 属性的删除 delete命...

  • JS中的对象

    一、调用系统构造函数与字面量方式   我们可以直接通过 new Object() 创建:   每次创建通过 new...

  • JS中的全局对象、原型与原型链

    一、JS中全局对象与浏览器中的全局对象 JS中默认全局对象是global,而在浏览器的全局对象是window,如w...

  • JavaScript进阶之:八、对象的动态特性

    js中的对象具有动态特性: js支持在对象定义之后,动态的 添加 / 修改 / 删除 / 查询 对象的成员:对象的...

网友评论

      本文标题:JS中的对象

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