就是显式 return的对象 #p#分页标题#e# // 当我们显式return一个原始数据类型 function Pe
标签:
方法一: Object结构函数模式* 套路: 先创建空Object东西, 再动态添加属性/要领
* 适用场景: 起始时不确定东西内部数据
* 问题: 语句太多
/* 一小我私家: name:"Tom", age: 12 */ // 先创建空Object东西 var p = new Object() p = {} //此时内部数据是不确定的 // 再动态添加属性/要领 p.name = ‘Tom‘ p.age = 12 p.setName = function (name) { this.name = name } //测试 console.log(p.name, p.age) p.setName(‘Bob‘) console.log(p.name, p.age)
方法二: 东西字面量模式* 套路: 使用{}创建东西, 同时指定属性/要领
* 适用场景: 起始时东西内部数据是确定的
* 问题: 该方法的劣势对照明显,就是无法复用,如果创建大量同类型的东西,则代码会非常冗余
var p = { name: ‘Tom‘, age: 12, setName: function (name) { this.name = name } } //测试 console.log(p.name, p.age) p.setName(‘JACK‘) console.log(p.name, p.age) var p2 = { //如果创建多个东西代码很反复 name: ‘Bob‘, age: 13, setName: function (name) { this.name = name } }
方法三: 工厂模式(操作内置东西的方法创建东西)* 套路: 通过工厂函数动态创建东西并返回
* 适用场景: 需要创建多个东西
* 问题: 东西没有一个具体的类型, 都是Object类型,没步伐判断类型
function createObj(name, age) { //返回一个东西的函数===>工厂函数 var obj = { name: name, age: age, setName: function (name) { this.name = name } } return obj } // 创建2小我私家 var p1 = createObj(‘Tom‘, 12) var p2 = createObj(‘Bob‘, 13) console.log(p1.constructor) // Object 指向的结构函数是Object console.log(p2.constructor) // Object 指向的结构函数是Object // p1/p2是Object类型 // 那么为什么说没步伐判断类型呢?那么我们创建一条狗的东西 // 可以看出,狗的constructor也是指向Object,,那么我们人和狗的类型就没步伐去区分了 let dog = createObj(‘旺财‘,10) console.log(dog.constructor) // Object 指向的结构函数是Object function createStudent(name, price) { var obj = { name: name, price: price } return obj } var s = createStudent(‘张三‘, 12000) // s也是Object
方法四: 自界说结构函数模式* 套路: 自界说结构函数, 通过new创建东西
* 适用场景: 需要创建多个类型确定的东西
* 问题: 每个东西都有不异的数据, 浪费内存
function Person(name,age){ // 1.系统自动创建东西,并且把这个东西赋值到this上,此步不需要我们操纵 // let this = new Object() // 2.给这个东西赋属性、要领,需要我们本身操纵 this.name = name this.age = age this.eat = function(){ console.log(name + ‘用饭‘) } // 3.系统自动返回创建的东西 // return this } let p1 = new Person("邵威儒",28) console.log(p1.constructor) // Person 指向的结构函数是Person function Dog(name,age){ this.name = name this.age = age } let dog = new Dog("旺财",10) console.log(dog.constructor) // Dog 指向的结构函数是Dog
默认是返回新创建的东西,出格需要注意的是如果显式return一个东西数据类型,那么将来new的东西,就是显式return的东西
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/33158.html