typeof
* 问题:只能检测基本数据类型
console.log(typeof(''))
console.log(typeof(100))
console.log(typeof({}))
console.log(typeof([]))
console.log(typeof(null))
constructor
* 语法: 数据结构.constructor
* 问题: null 和 undefined 不能使用
* 使用场景:一般用于引用数据类型
* 潜在问题:这是原型对象的某一个属性,我们是可以手动修改的
function Person () {}
const p1 = new Person()
console.log(p1.constructor)
console.log(Person.prototype)
console.log(p1.constructor === Person)
console.log([].constructor === Array)
console.log(null.constructor === Array)
console.log(undefined.constructor === Array)
console.log({}.constructor === Array)
Object.prototype.toString.call(要检测的数据)
* 返回值: [object 数据类型] (字符串格式的,并且数据类型的首字母大写)
* 使用场景: 任意类型都可准确判断,所以大部分情况下都可以使用
console.log(Object.prototype.toString.call([]))
console.log(Object.prototype.toString.call({}))
console.log(Object.prototype.toString.call(null))
console.log(Object.prototype.toString.call(undefined))
console.log(Object.prototype.toString.call(''))
console.log(Object.prototype.toString.call(100))
ES6类的语法
class Stu {
constructor (num) {
this.name = '张三'
this.age = num
}
init () {
console.log('我是原型上的init方法')
}
abc () {
console.log('我是原型上的abc方法')
}
move () {
console.log('我是原型上的move方法')
}
}
const s1 = new Stu(18)
console.log(s1)
const s2 = new Stu(189)
console.log(s2)
s1.init()
s1.move()