判断数组和对象
Array.isArray(isArr)*
- isArr 需要判断的变量
- 返回结果为布尔值,true 表示是数组,否则就不是。
variate instanceof
constructor
- variate 需要判断的变量
- constructor 构造函数(Array、Object…)
- 返回结果为布尔值,true 表示是 constructor 下的实例,否则就不是。
variate.constructor == constructor
- variate 需要判断的变量
- constructor 构造函数
- variate.constructor 返回的是 variate 对应的构造函数
自定义构造函数
function Person(name, age, sex) {
this.uname = name;
this.age = age;
this.sex = sex;
}
// 通过原型(prototype)定义方法
Presion.prototype.say = function () {
console.log(this)
}
函数的 prototype 属性,是一个指针指向当前函数的原型对象;
原型对象下的属性和方法可以被实例化对象所共享。
原型对象有一个 constructor 属性,该属性指向原型对象的构造函数。
Person.prototype.constructor
创建对象的方法
通过字面量的方式
let obj = { uname: '小小' }
通过 new 操作符 + Object() 创建对象
let obj = new Object()
通过构造函数
// 创建构造函数
function Person(naem, age, sex) {
this.name = naem
this.age = age
this.sex = sex
this.say = function () {
alert(this.name)
}
}
// 创建对象
let person1 = new Person('小小', 19, 0)
通过 Object.create()
Object.create()
以指定的对象为原型创建新的对象
var obj = {name: "妲己", gender: 'girl', e}
var newObj = {}
// 以 obj 为原型创建了一个新的对象,且添加了新的属性
newObj = Object.create(obj, {
age: {
// 设置属性值
value: 1000,
// 设置属性可修改,默认不可修改(false)
writable: true,
// 设置当前属性可删除(可配置),默认不可删除
configurable: true
// 设置当前属性可以被 for in 枚举,默认不可枚举
enumerable: true
},
/* 该属性默认不可写、不可枚举、不可配置 */
nickname: {
// 属性值
value: '柔柔'
}
})
console.log(newObj.age)
newObj.age = 369
console.log(newObj.age)
/*
// 删除 newObj 的 age 属性
delete newObj.age
console.log(newObj.age)
*/
// 遍历 newObj 的属性
for (var item in newObj) {
console.log(item)
}