工厂函数是什么?也是定义函数的一种方式么?

目录

工厂函数是什么?

定义某种数据类型的方式,一般有以下几种:

对于不同类型的数据,怎样定义方式最简单呢?


工厂函数是什么?

工厂函数是定义对象的方式之一。不是定义函数的方式。

定义函数的方式,见链接:(4条消息) 从函数内变量的访问,到匿名函数和自调用函数_shaylo的博客-CSDN博客

定义对象的方式:

  1. 字面量(创建单个对象时)
  2. new Object() 构造函数
  3. 工厂函数:对构造函数的封装
  4. 自定义构造函数(创建多个对象时)
// 工厂函数:封装 构造函数
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)

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值