- 创建对象的方法
// 构造函数
var F = function () {
this.name = 2
}
let obj = new F()
let obj = {name:1 }
let obj = new Object({name:1})
var P = {name: 3}
let obj = Object.create(P)
-
原型、构造函数
- 实例对象通过对构造函数new 操作产生的对象
- 实例化对象有__proto__属性,指向构造函数的prototype属性
- 构造函数的原型对象的constructor属性指向构造函数
- 对象才有__proto__属性,函数也是对象
- 查找一个对象的属性或者方法,如果没找到,就会去其原型对象上去查找,一直查找到Object.prototype上
let F = function() {
this.name = 2
}
let obj = new F()
obj.__proto__ = F.prototype // true
F.prototype.constructor === F // true
F.prototype.__proto__ === Object.prototype // true
F.__proto__ === Function.prototype // true
- instanceof 方法
instanceof 用来判断实例对象是不是某构造函数的实例
let arr = [1,2,3]
arr instanceof Array // true
arr.__proto__ === Array.prototype // true
arr instanceof Object // true 因为Array.prototype.__proto__ === Object.prototype
arr.__proto__ === Object.prototype
// 如何判断一个对象是哪个构造函数直接生成的实例
arr.__proto__.constructor === Array // true
arr.__proto__.constructor === Object // false