hasOwnProperty和isPrototypeOf

hasOwnProperty和isPrototypeOf
hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。 
isPrototypeOf是用来判断要检查其原型链的对象是否存在于指定对象实例中,是则返回true,否则返回false。 
in 操作检查对象中是否有名为 property 的属性。也可以检查对象的原型,判断该属性是否为原型链的一部分. 
Java代码 复制代码
hasOwnProperty:   
var obj = {a:1,b:2}   
obj.hasOwnProperty('a')   isPrototypeOf:   
function F(){}   
var fn = new F()   
F.prototype.isPrototypeOf(fn)  
前者是判断对象中是否存在某个属性,后者是判断对象是否是原型链的对象。 
那么isPrototypeO与instanceof又有什么区别? 
Java代码 复制代码
function A () {   this.a = 1;   
}   
function B () {   this.b = 2;   
}   
B.prototype = new A();   
B.prototype.constructor = B;   function C () {   this.c = 3;   
}   
C.prototype = new B();   
C.prototype.constructor = C;   var c = new C();   // instanceof expects a constructor function   
  
c instanceof A; // true   
c instanceof B; // true   
c instanceof C; // true   // isPrototypeOf, can be used on any object   
A.prototype.isPrototypeOf(c); // true   
B.prototype.isPrototypeOf(c); // true   
C.prototype.isPrototypeOf(c); // true  
一段英文说明: 
The difference between both is what they are, and how you use them, e.g. the isPrototypeOf is a function available on the Object.prototype object, it lets you test if an specific object is in the prototype chain of another, since this method is defined on Object.prototype, it is be available for all objects. 
instanceof is an operator and it expects two operands, an object and a Constructor function, it will test if the passed function prototype property exists on the chain of the object (via the [[HasInstance]](V) internal operation, available only in Function objects). 
[color=blue] 
再来看代码: 
Java代码 复制代码
var a = [];   
Array.prototype.isPrototypeOf(a) //true   
a instanceof Array               //true  
明显却别是:instanceof是一个操作符。isPrototypeOf是一个函数。

 

posted on 2013-04-11 14:20 Spider024 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/spider024/archive/2013/04/11/3014426.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576026.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux下防火墙加白名单

在linux系统中安装yum install iptables-services 然后 vi /etc/sysconfig/iptables # Generated by iptables-save v1.4.7 on Sun Aug 28 12:14:02 2016*filter:INPUT ACCEPT [0:0]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [0:0]-N whitelist-A whitelist -s 8.8.8.8 -j ACCEPT-…

Linux LVM硬盘管理及LVM扩容

原文出自http://www.cnblogs.com/gaojun/archive/2012/08/22/2650229.html 一、LVM简介 LVM是 Logical Volume Manager(逻辑卷管理)的简写,它由Heinz Mauelshagen在Linux 2.4内核上实现。LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用&…

android系统框架()

Android系统框架介绍: 1.大体框架: -src目录: 主要是完成java代码的编写 -assets目录: 资源目录 -res目录: 存储图片,布局文件和字符串,菜单等文件 -bin目录: 输出文件夹,如生成的APK文件 -project.properties: 工程属性文件配置 -gen目录: 系统自动生成的源代码目录 R.java默认…

zabbix服务端远程执行命令

执行一些命令或者脚本就行了。 但zabbix远程执行命令需要客户端的zabbix用户要有sudo权限,zabbix的客户端要改的地方是配置文件里 EnableRomoteCommands1 然后要更改的是visudo里的给zabbix用户赋予权限 zabbix ALLNOPASSWD:ALL 然后把defaults requiretty注释掉。…

Keil 文本对不上格

初次使用keil3,光标总是定位不准,修改十分麻烦,google后解决问题,修改tools.ini如下(蓝色为加入项):NAME"YGLenovo User", "a"EMAIL"a"ANSI1BOOK0"UV3\RELEASE_NOTES.HTM" (&…

Linux(CentOS6.5)下编译安装Nginx1.10.1

原文出自:http://www.cnblogs.com/comexchan/p/5815753.html Linux(CentOS6.5)下编译安装Nginx1.10.1 首先在特权账号(root)下安装编译时依赖项: yum install gcc gcc-c perl -y 首先以非特权账号(本文以账号comex为例…

Java volatile关键字

Java 语言中的volatile变量可以被看作是一种“程度较轻的synchronized”,与synchronized相比,volatile变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是synchronized的一部分。本文介绍了几种有效使用volatil…

Zabbix 3.0 基础介绍 [一]

原文出自 http://www.abcdocker.com/abcdocker/1402 Zabbix 3.0 基础介绍 [上] zabbix 一、Zabbix介绍 zabbix 简介 Zabbix 是一个高度集成的网络监控解决方案,可以提供企业级的开源分布式监控解决方案,由一个国外的团队持续维护更新,软件可以…

DOM 节点的创建、删除、替换

只要在屏幕上托三个button按钮就可以了&#xff0c;下面就是程序运行时的界面&#xff1a; <head> <title></title> <script type"text/javascript"> function CreateNode() { var pnode document.createElement(p…

Zabbix 3.0 部署监控 [二]

原文出自 http://www.abcdocker.com/abcdocker/1453 Zabbix 3.0 部署监控 [二] zabbix 一、添加监控主机及设置 1.创建主机 Agent可以干一些SNMP无法干的事情&#xff0c;例如自定义监控项 snmp相关文章&#xff1a;http://www.abcdocker.com/abcdocker/1376 这里我们先不着…

oracle 一些基本概念

数据库就是一个相片底片 实例就是相纸 一个底片可以冲多个相纸&#xff0c;但一张相纸最多冲一个底片。 数据库可以由多个实例装载和打开&#xff0c;而实例可以在任何时间点装载和打开一个数据库。实际上&#xff0c;准确地讲&#xff0c;实例在其整个生存期中最多能装载和打开…

【leetcode】Integer to Roman

最近使用开发的过程中出现了一个小问题&#xff0c;顺便记录一下原因和方法-- Question &#xff1a; Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999. Anwser 1 &#xff1a; class Solution { public:st…

MySQL必会企业面试题

本文转载 老男孩教育原文&#xff1a;http://user.qzone.qq.com/49000448/blog/1427333863 1.登陆数据库 (1)单实例 mysql -uroot -poldboy (2)多实例 mysql -uroot -poldboy -S /data/3306/mysql.sock 2.查看数据库版本及当前登录用户是什么 mysql> select version(); 查看…

关于ORACLE的GUID主键生成

转自http://blog.sina.com.cn/s/blog_53d3c24a0100mplc.html项目中若采用oracle数据库&#xff0c;则主键生成可以有两种方式&#xff0c;一是用sys_guid(),二是定义一个sequence&#xff0c;然后用nextval得到ID。Oracle的定义sequence例子&#xff1a;create sequence seq_te…

MySQL binlog三种模式

原文出自 http://www.abcdocker.com/abcdocker/213 MySQ binlog三种模式及设置方法 1.1 Row Level 行模式 日志中会记录每一行数据被修改的形式&#xff0c;然后在slave端再对相同的数据进行修改优点&#xff1a;在row level模式下&#xff0c;bin-log中可以不记录执行的sql…

contenttype添加field

1 $splist.contenttypes["News"].fieldlinks.add($fieldlink) contenttypes中添加field的方法。 下面这种则不起作用 1 $splist.contenttypes["News"].fields.add($spfield) http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spcontenttype.…

虚拟视频驱动程序vivi.c源码分析

虚拟视频驱动程序vivi.c源码分析以下先把上一篇文章中的最后一段&#xff0c;放在这里利于程序源码的分析&#xff1a; vivi.c 虚拟视频驱动程序----- 此代码模拟一个真正的视频设备V4L2 API (位于drivers/media/video目录下) 入口&#xff1a;int __init vivi_init(void) …

Cobar部署与测试

原文出自 http://www.abcdocker.com/abcdocker/84 Cobar部署与测试 一、Cobar介绍 1.1功能概述&#xff1a; Cobar是关系型数据的分布式处理系统&#xff0c;它可以在分布式的环境下看上去像传统数据库一样为您提供海量数据服务。 1.1.1 Cobar核心功能&#xff1a; 分布…

深度css:关于浮动(float,clear)的图形化理解

接触CSS以来&#xff0c;有人说浮动始终给人一种神秘的感觉&#xff0c;正因为有了它的一成不变的table布局开始了渐渐被divcss取代&#xff0c;它是控制传说中文本流核心和关键要素&#xff0c;懂得控制“块”的流动和布局即等于控制了网页的排版和布局。今天就以简单图文形式…

amoba读写分离

原文出自 http://www.abcdocker.com/abcdocker/81 1.AMOEBA是什么 Amoeba(变形虫)项目,该开源框架于2008年 开始发布一款 Amoeba for Mysql软件。这个软件致力于MySQL的分布式数据库前端代理层&#xff0c;它主要在应用层访问MySQL的 时候充当SQL路由功能&#xff0c;专注于分布…