Javascript原型相关的函数

原创 2016年06月01日 15:38:48

一、isPrototypeOf

测试一个对象的原型是否是一个类的原型的方法。例如
function Person(){}
Person.prototype.name=”Leo”;
var p1=new Person();
Person.prototype. isPrototypeOf(p1);//将会返回true,这句代码的意思是,Person的
//原型是否是p1的原型


二、Object.getPrototypeOf

获取对象原型的方法。
例如上面的例子:alert(Object.getPrototypeOf(p1)==Person.prototype);//返回true
此方法支持的浏览器有IE9+ 、Firefox3.5+ 、Safari5+ 、Opera12+ 、Chrom


三、hasOwnProperty

检测属性是在实例还是原型中的方法。示例:
function Person(){}
Person.prototype.name=”Leo”;
var p=new Person();
console.log(p. hasOwnProperty(“name”));//打出false
p.name=”Linda”;
console.log(p. hasOwnProperty(“name”));//打出true


四、in操作符

示例:
function Person(){}
Person.prototype.name=”Leo”;
var p=new Person();
console.log( “name” in p);//打出true
p.name=”Linda”;
console.log( “name” in p);//打出false
结论:in是检测一个属性是否在一个对象中的,无论这个属性是在实例还是原型,只要这个属性存在于对象中,并且是可访问的,就返回true于是,根据hasOwnProperty和in操作符,我们可以判断原型是否有某个属性
function hasPrototypeProperty(obj,property){
return !obj. hasOwnProperty(property) && (property in obj);
}


五、Object.keys()

获取所有可枚举的实例属性,注意,获取的是实例属性,不是原型的

示例:
function Person(){
this.name= “Leo “;
}
Person.prototype.age=18;
var person=new Person();
console.log(Object.keys(person));//打印出name


六、Object.getOwnPropertyNames()

获取所有实例属性,无论属性是否可枚举。在高版本浏览器中可能效果跟keys一样,只能获取可枚举的实例属性。
示例:
function Person(){
this.name= “Leo “;
}
Person.prototype.age=18;
var person=new Person();
console.log(Object. getOwnPropertyNames (person));//打印出name或
// name,constructor

注意这里获取的也是实例的属性,但是此方法可以将不可枚举的属性也获得,例如constructor,在高版本浏览器可能获取不到constructor

彻底理解JavaScript原型

 原型是JavaScript中一个比较难理解的概念,原型相关的属性也比较多,对象有"[[prototype]]"属性,函数对象有"prototype"属性,原型对象有"constructor...
  • wxw_317
  • wxw_317
  • 2015年11月03日 16:14
  • 5840

深入理解JavaScript的原型对象

JavaScript的继承机制是基于原型,而不是类。因此要理解JavaScript的继承机制,包括基于ES5的框架模型(例如Backbone)的继承机制,需要更深入了解原型对象。...
  • hongse_zxl
  • hongse_zxl
  • 2015年03月25日 16:13
  • 3710

JavaScript中原型对象的彻底理解

一、什么是原型 原型是Javascript中的继承的继承,JavaScript的继承就是基于原型的继承。 1.1 函数的原型对象​ 在JavaScript中,我们创建一个函数A(就是声明一个...
  • u012468376
  • u012468376
  • 2016年11月10日 20:43
  • 11665

关于js原型的经典面试题解析

这是我一次的面试的时候 鄙视的部分 回来之后才发现是一道很经典的面试原型题   话不多说  上图 ---------------------------------------------...
  • u013321789
  • u013321789
  • 2017年07月20日 02:25
  • 397

JS----构造函数与原型prototype 区别

构造函数方法很好用,但是存在一个浪费内存 通过原型法分配的函数是所有对象共享的. 通过原型法分配的属性是独立.-----如果你不修改属性,他们是共享...
  • damys
  • damys
  • 2015年07月22日 17:16
  • 2016

【JavaScript】5.面试题一原型和原型链

一、题目 1、如何准确判断一个变量是数组类型? var array=[]; console.log(array instanceof Array);//true 判断引用类型的具体...
  • benben513624
  • benben513624
  • 2017年09月28日 07:03
  • 678

用通俗易懂的语言介绍JavaScript原型

此位译文 原型(prototype)是每个JavaScript开发人员必须理解的基本概念,本文的目标是通俗而又详细地解释JavaScript的原型。如果你读完这篇博文以后还是不理解JavaSc...
  • developer_biao
  • developer_biao
  • 2014年06月23日 00:35
  • 1589

彻底理解javascript中的原型链

要弄清楚原型链就要先弄清楚 function 类型,在javascript中没有类的概念,都是函数,所以它是一门函数式的编程语言。类有一个很重要的特性,就是它可以根据它的构造函数来创建以它为模板的对象...
  • ljl157011
  • ljl157011
  • 2014年02月22日 13:38
  • 12504

malloc与free函数原型

这两个和内存相关的函数都在头文件stdlib.h中,所以在应用的时候,需要包含该文件。#include C语言中的内存分配函数:void* malloc(size_t size);malloc向系统申...
  • yipiantiandi
  • yipiantiandi
  • 2010年11月08日 13:59
  • 2826

printf 函数原型

typedef char *va_list;#define   _AUPBND        (sizeof (acpi_native_int) - 1)#define   _ADNBND      ...
  • selooloo
  • selooloo
  • 2009年12月16日 10:57
  • 17442
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Javascript原型相关的函数
举报原因:
原因补充:

(最多只允许输入30个字)