目录
工厂函数是什么?
工厂函数是定义对象的方式之一。不是定义函数的方式。
定义函数的方式,见链接:(4条消息) 从函数内变量的访问,到匿名函数和自调用函数_shaylo的博客-CSDN博客
定义对象的方式:
- 字面量(创建单个对象时)
- new Object() 构造函数
- 工厂函数:对构造函数的封装
- 自定义构造函数(创建多个对象时)
// 工厂函数:封装 构造函数
function createPerson(name, age) {
let person = new Object()
person.name = name
person.age = age
person.sayHi = function () {
console.log('Hi')
}
rerturn person
}
let p1 = createPerson('Lily', 18)
console.log(p1)
定义某种数据类型的方式,一般有以下几种:
第一种:字面量:最简单的方式,是通过赋值给变量来实现的。
// array
let arr = [1, 2, 3]
// function
// 方式一:把普通函数赋值给变量
let foo = function fun(x) {
return x * 2
}
// 方式二:把匿名函数赋值给变量
let foo = function(x) {
return x * 2
}
// object
let person1 = {
name: 'Lily',
age: 18,
sayHi: function () {
console.log(this.name + '向你问好')
}
}
第二种:构造函数:通过 new 关键字+首字母大写的对象名 实现。(不推荐,代码量大)
// array
let arr1 = new Array(2, 3)
console.log(arr1) // [2, 3]
// function :不推荐,因为 参数 和 函数体 都要写为 字符串,很不方便
let foo = new Function('x', 'return x * 2')
// object
let person1 = new Object()
person1.name = 'Lily'
person1.age = 18
person1.sayHi = function () {
console.log('你好')
}
对于不同类型的数据,怎样定义方式最简单呢?
数组:字面量方式
// array 字面量
let arr = [1, 2, 3]
函数:首选箭头函数,其次是匿名函数,最后是function 关键字
// arrow function
x => x * 2
(x, y) => {
return x *= y
}
// 匿名函数
function (x) {
return x * 2
}
(function (x) {
return x * 2
})(5);
// function 关键字
function foo(x) {
return x * 2
}
对象:
- 创建单个对象:字面量方式
- 创建多个对象:自定义构造函数
// 创建单个对象:字面量方式 let person1 = { name: 'Lily', age: 18, sayHi: function () { console.log(this.name + '向你问好') } } // 创建多个对象:自定义构造函数 function Person(name, age) { this.name = name this.age = age this.sayHi = function () { console.log(this.name + '向你问好') } } let p1 = new Person('Lily', 18) console.log(p1)