博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
typeof,constructor,hasOwnProperty,instanceof ,isPrototypeOf等名词解释
阅读量:6209 次
发布时间:2019-06-21

本文共 2122 字,大约阅读时间需要 7 分钟。

typeof

返回一个用来表示表达式的数据类型的字符串。

typeof[()expression[]] ;

expression 参数是需要查找类型信息的任意表达式。

说明

typeof 运算符把类型信息当作字符串返回。typeof 返回值有六种可能: "number," "string," "boolean," "object," "function," 和 "undefined."

typeof 语法中的圆括号是可选项。

typeof在以下两种情况下返回undefined

1.变量没有被声明

2.变量的值是undefined

console.log(typeof  test);//'undefined'

console.log(typeof undefined); //'undefined'

当typeof 后的表达式是null时:

console.log(typeof null); // 'object'

constructor

定义:constructor 属性返回对创建此对象的数组函数的引用。

例1:

var test=new Array();

if(test.constructor==Array){

    console.log(‘这是数组’);

}

//这是数值

例2:

function employee(name){

    this.name=name

};

var bill=new employee('bill');

console.log(bill.constructor);

console.log(bill.constructor==employee);

//function employee(name){

    this.name=name

};

//true

例3:

function Person(){}

Person.prototype.name='Bill';

Person.prototype.sayName=function(){alert(this.name)}

var person=new Person();

console.log(person.constructor);//function Person(){}

如果将prototype改为字面量形式,结果将发生变化:

Person.prototype={

name:'Bill',

sayName:function(){alert(this.name)

}

console.log(person.constructor);//function Object() { [native code] }

没创建一个函数,就会同时创建它的prototype对象,这个对象会自动获得constructor属性,使用上面的语法本质上重写了默认的prototype对象,因此constructor属性也就改变成了新对象的constructor属性(指向Object构造函数),不再指向Person函数。如果真的需要constructor那么手动为constructor赋值:

Person.prototype={

constructor:Person, 

name:'Bill',

sayName:function(){alert(this.name)

}

instanceof 

用于判断一个变量是否某个对象的实例

instanceof 检测一个对象A是不是另一个对象B的实例的原理是:查看对象B的prototype指向的对象是否在对象A的[[prototype]]链上。如果在,则返回true,如果不在则返回false。不过有一个特殊的情况,当对象B的prototype为null将会报错(类似于空指针异常)。

例:

function Person(){

};

Person.prototype={};

var person=new Person();

console.log(person instanceof  Person);//true

Person.prototype={};//相当于重写了prototype

console.log(person instanceof  Person);//false

Person.prototype=null;

console.log(person instanceof Person);//error

hasOwnProperty

hasOwnProperty是用来判断一个对象是否有你给出名称的属性或对象。此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。

isPrototypeOf 

isPrototypeOf返回一个布尔值,该值指示对象是否存在于另一个对象的原型链中。

object1.isPrototypeOf(object2)

其中object1为必选项,一个对象的实例。

object2为必选项,另一个对象,将要检查其原型链。

转载于:https://www.cnblogs.com/liu-liang/archive/2013/05/09/3069182.html

你可能感兴趣的文章
第六次作业(团队作业)
查看>>
JavaScript中的this陷阱的最全收集--没有之一
查看>>
java中的构造方法
查看>>
一道关于位数扩充的题目
查看>>
[GeekBand] STL vector 查找拷贝操作效率分析
查看>>
人类的终极目标是什么?
查看>>
使用Java语言开发微信公众平台(四)——图文消息的发送与响应
查看>>
Ansible 进阶技巧
查看>>
HDU 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活【多重背包】
查看>>
在等高响应式布局理的一些问题
查看>>
android多渠道打包
查看>>
【Spring系列】自己手写一个 SpringMVC 框架
查看>>
Microsoft Visual Studio WPF项目 错误:未处理 SecurityException,PublicKeyToken=b77a5c561934e089...
查看>>
在grid结果集中实现全选或全不选某些特定的行
查看>>
bzoj1212[HNOI2004]L语言
查看>>
bzoj1622[Usaco2008 Open]Word Power 名字的能量*
查看>>
uitableview做九宫格
查看>>
相同的树
查看>>
tcl使用笔记
查看>>
退役前留帖
查看>>