首页 > Web开发 > 详细

js 面向对象之构造器与工厂函数

时间:2019-10-10 01:02:09      阅读:132      评论:0      收藏:0      [点我收藏+]

字面量模式声明一个对象实例

let m = {name: "lisi", age:15}

m.constructor
// ƒ Object() { [native code] }

Object.constructor
// ƒ Function() { [native code] }

 

解释上面的输出:

Object、Function 是 js 内置的包装类(引用类)对象。

每个对象实例都有构造器, 构造器是函数, 亦称之为构造器函数。字面量形式的对象构造器通常是 Object,Object、Function与普通函数 的构造器都是 Function。

 

new 构造函数模式创建对象实例

function Circle(radius) {
    this.radius = radius
    this.draw = function (){
        console.log("draw")
    }
}


// new 操作符做了4件事
let c1 = new Circle(2)

// 第二件事证明:实例的构造器属性为当前函数
console.log(c1.constructor)
/* output:
ƒ Circle(radius) {
    this.radius = radius
    this.draw = function (){
        console.log("draw")
    }
}
*/

// 构造器本身也是一个 Function 函数
console.log(Circle.constructor)
/* output:
ƒ Function() { [native code] } 
*/

let Circle2 = new Function("radius", `
    this.radius = radius
    this.draw = function (){
        console.log("draw")
    }
`)

 

说明两点:

构造函数创建(new)的对象实例,其构造器为该构造函数。函数本身的构造器是 Function对象。

new 关键字,做了四件事。创建空对象实例、设置空对象实例的构造器为当前构造对象、将 this 指向该对象实例、返回 this(如果构造函数没有返回值)。

 

参考


https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new

 

js 面向对象之构造器与工厂函数

原文:https://www.cnblogs.com/lemos/p/11645156.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!