javascript - 关于instanceof?
怪我咯
怪我咯 2017-04-10 17:35:18
[JavaScript讨论组]

instanceof 用于判断一个变量是否某个对象的实例。什么叫是某个对象的实例啊,这句话什么意思。。?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(5)
阿神

老规矩,先上例子:

function Person(name, age) {
    this.name = name;
    this.age = age;
}
var person1 = new Person('xiaoming', 23);
var person2 = new Person('xiaohong', 25);

console.log(person1.name);    //xiaoming
console.log(person2.age);     //25

console.log(person1 instanceof Person);    //true
console.log(person2 instanceof Person);    //true
console.log(person1 instanceof Object);    //true
console.log(person2 instanceof Object);    //true

person1person2有着相同的属性,但又有不同的属性值,它们都是通过Person构造出来的具有相似结构的对象,所以它们都是Person的实例。通过Person()构造函数我们可以创建出无数个类似的实例。为什么我们可以对引用类型使用像toString()这样的方法?因为所有的引用类型都是Object的实例。它们使用的toString()来自Object,确切的来说,来自Object的原型。

黄舟

在JavaScript中,所谓的是某个对象的实例,并不像其他向面向对象语言那么严格。

a instanceof Cons的结果为true时,只是说明

Cons.prototype位于对象a的原型链上

并不能说明a这个对象是由构造函数Consnew出来的。

举例:

function Student() {}
var s = new Student()

function Teacher() {}
Teacher.prototype = Student.prototype

s instanceof Teacher // 结果true
巴扎黑
function Person(){
    this.name = "person";
}

var p = new Person();
p instanceof Person ? "p is an instance of Person" : "p isn't an instance of Person";
大家讲道理

用于确定该对象是否是某个对象的子类。

比如:

var arr = []
arr instanceof Array
// true
arr instanceof String
// String
高洛峰

在面向对象语言中,一般会从一个模子中实例化出来一个对象(Object),或者叫实例(Instance),在JavaScript描述成一个变量是一个函数的实例或许会比较好理解一点。
但是一个函数是不是一个对象呢?一个函数应该是一个对象

function Person(){
    this.name = "person";
}

var p = new Person();
p instanceof Person ? "p is an instance of Person" : "p isn't an instance of Person";

Person instanceof Object; //true
Persion instanceof Function; //true

在上面的代码中可以看出p是Person(模子)的一个对象(实例)
而Person本身是一个函数对象,是对象Function的一个实例

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号