1 | var Book = function(title, time, type){ |
什么叫对象的安全创建
假设我们有以下一个类1
2
3
4
5var Book = function(title, time, type){
this.title = title;
this.time = time;
this.type = type;
}
我们用下面代码去实例化一个Book1
var book = Book('javascipt', '2010', 'js');
当我们查看book对象时,会发现book对象 undefined1
console.log(book); //undefined
为什么会出现这种情况呢?原因就是我们在实例化book对象没有用new
关键词。我们再试一下1
var book = new Book('javascipt', '2010', 'js');
查看1
2console.log(book);
//得到 Book {title: "javascipt", time: "2010", type: "js"}
那么又没有办法可以在我们没有用 new
关键词还能安全的创建对象,而不会出现 undefined
的情况。即,对象的安全创建。
对象的安全创建的实现
首先,我们会用到 javascript 中的 instanceof 运算符。
instanceof
instanceof 用来检测某个对象是否是某个类的实例。
示例1:判断 foo 是否是 Foo 类的实例1
2
3function Foo(){}
var foo = new Foo();
console.log(foo instanceof Foo) //true
示例2:instanceof 在继承中关系中的用法(判断 foo 是否是 Foo 类的实例 , 并且是否是其父类型的实例)
1 | function Aoo(){} |
Tips: instanceof 用来检测某个对象是否是某个类的实例。
所以1
console.log(Foo instanceof Aoo) //false
但是Foo.prototype
继承了 Aoo
,所以1
console.log(Foo.prototype instanceof Aoo) //true
希望我们不要弄混~
另,Javascript为我们提供的原生对象 Object,所有的对象都可以说成是Object的子类。1
console.log(instance instanceif Object); //true
实现
1 | var Book = function(title, time, type){ |
测试
1 | var book = Book('javascipt', '2010', 'js'); |
over~