您的位置:365bet体育备用网址器 > 应用 > 对象创建,用于初始化新创建对象的特殊方法3

对象创建,用于初始化新创建对象的特殊方法3

2019-08-30 21:31

Constructor是一种在内存已分配给该对象的动静下,用于先导化新创制对象的优良格局。Object构造器用于创立特定类型的对象–盘算好对象以备使用,同事收受构造器能够接纳参数,以在第贰次创制对象时,设置成员属性和方法值。

0. Constructor(构造器)模式

在面向对象中,Constructor是一种在内存已经分配给该指标的情形下,用于开端化新创制对象的特别规措施。在JavaScript中,平时用object构造器。

Object构造器用于创建特定类型的靶子——策动好靶子以备使用。
365bet在线官网,经受构造器能够运用的参数,以在首先次创立对象时,设置成员变量和办法的值。

指标成立
履新新目的,在javascript中国和东瀛常有三种艺术:
 1.对象直面量方法
var newObj = {};

1.指标创造

1.1 JavaScript创立对象一般用如下三种方法:

// 创建空对象

var newObject1 = {};

// Object构造器
var newObject2 = new Object();

1.2 对象赋值
指标赋值一般有二种方法:

// 1."点"语法

// 设置属性
newObject.someKey = "asd";

//获取属性
var key = newObject.someKey;

// 2.中括号

//设置属性
newObject["someKey"] = "asd";

//获取属性
var key = newObject["someKey"];

// 3.Object.defineProperty

//设置属性
Object.defineProperty(newObject, "someKey", {
    value:"for more control of the property's behavior",
    writable: true,
    enumerable: true,
    econfigurable: true
});

// 简化
var defineProp = function(obj, key, value){
    config.value = value;
    Object.defineProperty(obj,key,config);
}

// e.g.
var person Object.create(null);
defineProp(person, "car", "myCar");
defineProp(person, "birth", "asd");
defineProp(person, "hasBeard", false);

// 4.Object.defineProperties

// 设置属性
Object.defineProperties(newObject, {
    "someKey":{
        value:"asd",
        writable: true
    },
    "anotherKey": {
        value:"qwe",
        writable: true
    }
});

1.3 继承
这几个格局竟然是能够用于后续的

// 创建司机对象继承于person对象
var driver = Object.create(person);

// 设置司机的属性
defineProp(driver, "speed", "100kmh");

// 获取继承的属性
console.log(driver.birth);

// 获取新属性
console.log(driver.speed);

 2.构造器的简练方式
var newObj = new Object();
在Object构造器为一定的值制造对象封装,或许未有传递值时,它将开创三个肯那些指标并赶回

2. 基本Constructor(构造器)

因此在构造器后面加new关键字,实例化新对象,该对象成员由该函数定义。
在构造器内部,关键字this引用新创建的靶子。

function Car(model, year, miles){
    this.model = model;
    this.year = year;
    this.miles = miles;
    this.toString = function(){
        return this.model   "has done"   this.miles   "miles";
    }
}

//创建实例
var c1= new Car("car1", "2016", 20000);
var c2 = new Car("car2", "2017", 1500);

//调用toString()查看输出
console.log(c1.toString());
console.log(c2.toString());

基本构造器存在有的标题,包罗:

  • 继续困难
  • 内部的函数(比方toString)是为每一种用Car构造器成立的新目的分别重新定义的,应该达成分享。

 对象赋值的法子:  1.“点”方法

3. 带原型的(prototype)的Constructor(构造器)

JavaScript中的prototype(原型)属性,能够让JavaScript构造器创设一个对象后,新指标具有构造器原型的保有指标。
如此那般,前文示例变为:

function Car(model, year, miles){
    this.model = model;
    this.year = year;
    this.miles = miles;
};

Car.prototype.toString = function{
    return this.model   " has done "   this.miles   " miles";
};

//创建实例
var asd = new Car("car1", "2016", 20000);
var qwe = new Car("car2", "2017", 1500);

//调用toString()查看输出
console.log(asd.toString());
console.log(qwe.toString());

那时,toString()的单纯实例就能够在富有的Car对象中国共产党享。

 //设置属性
newObj.name = 'LanFeng';
//获取值
var user= newObj.name;

 1.中括号方法

 //设置属性
newObj["name"]= 'LanFeng';
//获取值
var user= newObj["name"];

 1.Object.defineProperty (适用ECMAScript5)

 //设置属性
Object.defineProperty(newObj,"name",{
  value:"LanFeng",
  writable:true,
  enumerable:true,
  configurable:true
})

 1.Object.defineProperties

 //设置属性
 Object.defineProperties(newObj,{
   "someKey":{
    value:"Hello Js",
     writable:true
  },
  "anotherKey":{
    value:"Foo bar",
    writable:false
  }
})

Javascript不帮忙类的概念,但它确实支撑与对象一齐用的独树一帜constructor函数,通过在构造器前边加new关键字,告诉js像使用构造器同样实例化多个新对象,並且对象成员由该函数定义。
在结构器内,关键字this援引新创建的靶子。回想对象创制,基本的构造器:

function Car(model,year,miles){
  this.model = model;
  this.year = year;
  this.miles = miles;
  this.toString = function(){
  return this.model   "has done"   this.miles  "miles";
  }
}
//创建实例化对象

var civio = new Car("Honda Civio",2009,20000);

var mondeo= new Car("Ford Mondeo",2009,5000);

上边例子是贰个轻易的构造器格局版本,但它真的存在部分主题素材,个中贰个标题是,它利用持续变得劳顿,别的叁个难点是,toString()那样的函数是为种种使用Car构造器成立的新对象而个别重新定义的,这些不是最卓绝的,因为这种函数应该在具有的Car类型实例间接分享。

javascript中有有一个prototype的性子,调用js构造器创造贰个对象后,新目的就能具有构造器原型的具备属性,通过这种方式,能够创建四个对象,并会见同一的原型,实现格局分享。

function Car(model,year,miles){
  this.model = model;
  this.year = year;
  this.miles = miles;

}


//原型函数
Car.prototype.toString = function(){
  return this.model   "has done"   this.miles  "miles";
  }

//创建实例化对象

var civio = new Car("Honda Civio",2009,20000);
var mondeo= new Car("Ford Mondeo",2009,5000);
console.log(civio.toString())
console.log(mondeo.toString())

前几日toString()的十足实例就可见在有着Car对着之间分享。

如上正是本文的全体内容,希望对大家的求学抱有帮衬,也期望大家多多协助脚本之家。

您也许感兴趣的文章:

  • javascript asp教程第三课 new String() 构造器
  • JavaScript中动用构造器创设对象无需new的气象表达
  • 详解JavaScript中的构造器Constructor方式
  • JavaScript设计方式之工厂方式和构造器方式
  • JavaScript 高等篇之闭包、模拟类,承袭(五)
  • js模拟类承袭小例子
  • JavaScript 模拟类机制及个体变量的格局及思路
  • 在JavaScript中模拟类(class)及类的接轨关系
  • JavaScript中采用构造器函数模拟类的主意

本文由365bet体育备用网址器发布于应用,转载请注明出处:对象创建,用于初始化新创建对象的特殊方法3

关键词:

  • 上一篇:没有了
  • 下一篇:没有了