JS创建⾃定义对象的六种⽅法总结
1、创建⼀个 Object 实例
var person = new Object();
person.name = "rose";
person.age = 18;
person.job = "actor";
person.sayName = function () {
console.log(this.name);
};
console.log(person);
2、对象字⾯量
var person = {
name: "rose",
age: 18,
job: "actor",
sayName: function () {
console.log(this.name);
},
};
console.log(person);
上⾯两种⽅式是创建对象的两种基本⽅式,他们的原型就是 Object
3、⼯⼚模式
function createPerson(name,age,actor){
var person = new Object();
person.name = "rose";
person.age = 18;
person.job = "actor";
person.sayName = function () {
console.log(this.name);
};
return person
}
console.log(p1 instanceof Object);//true
console.log(p1 instanceof createPerson);//false
从上⾯代码中我们可以看出来,⼯⼚模式实际上就是借助函数,内部返回使⽤第⼀种⽅式( new Object())创建的对象。优点:可以很⽅便的创建相似对象。
缺点:没有解决对象识别的问题,即怎样知道⼀个对象的类型。
4、构造函数⽅式
function Person(name, age, job) {
this.name = name;
this.age = age;
this.job = job;
this.sayName = function () {
console.log(this.name);
};
}
var p = new person("rose", 18, "actor");
console.log(p instanceof Person);//true
console.log(p instanceof Object);//true
构造函数可以创建特定类型的对象,像 Object , Array 这样的原⽣构造函数,在运⾏时会⾃动出现在执⾏环境中。
构造函数模式与⼯⼚模式的不同之处为:
1. 没有显式得创建对象,
2. 直接将属性和⽅法赋值给了this对象
3. 没有return语句
构造函数⽅式创建对象必须使⽤ new ,操作符,会经历下⾯四个步骤
1. 创建⼀个对象
2. this指向这个新创建的对象
3. 执⾏代码
4. 返回这个对象
构造函数⽅式的优点:以构造函数创建的对象,在其原型上都会有⼀个 constructor 属性,这个属性指向构造函数 Person ⽽这个属性最初是⽤来标识数据类型的。
忧化
function Person(name, age, job) {
this.name = name;
this.age = age;
this.job = job;
this.sayName = sayName;
}
function sayName(){
console.log(this.name);
}
var p = new person("rose", 18, "actor");
缺点:当对象需要很多⽅法的时候,就会定义多个全局作⽤域下的函数,这样⼀来,不仅毫⽆封装性可⾔,⽽且让全局作⽤域下的函数过多。js原型和原型链的理解
5、原型模式
function Person() {}
Person.prototype.name = "rose";
Person.prototype.age = 18;
Person.prototype.sayName = function () {
console.log(this.name);
};
var p = new Person();
console.log(p);
说到原型对象就要说⼀下原型链,原型与原型链对象如下图所⽰:
我们可以看到,在prototype上⾯定义的所有属性都是在其原型对象上。在原型对象上的属性与⽅法属于公有属性和公有⽅法。其所有实例都可以访问到。
6、**组合使⽤构造函数模式和原型模式 ** 最常⽤
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.sayName = function () {
console.log(this.name);
};
var p = new Person("rose", 18);
console.log(p);
对象在引⽤其属性的时候,会按照原型链去查,直到查到Object的原型。
总结
到此这篇关于JS创建⾃定义对象的六种⽅法的⽂章就介绍到这了,更多相关JS创建⾃定义对象⽅法内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。