[翻译]JavaScript中对象的层次与继承(8)
作者:chenzhe 来源:chenzhe 发布时间:2008-12-31 13:36:00
标签:类,对象,继承,javascript,编程
确定实例关系
你可能想要知道某个对象的原型链中究竟有些什么对象,所以你可以分辨出这个对象从哪些对象继承属性。在基于类的语言中,你可能拥有一个instanceof操作符来完成这项工作。JavaScript可没有提供instanceof,但是你可以自己写一个这样的函数。
正如在"属性的继承"中所讨论的,当你使用new操作符和构造函数创建新对象的时候,JavaScript将新对象的__proto__属性设置为构造函数的prototype属性的值。你可以使用这一点来测试原型链。
举个例子,假设你使用了我们上面使用的定义,原型都被合适地设置好了。像下面这样创建一个__proto__对象:
程序代码
chris = new Engineer("Pigman, Chris", ["jsd"], "fiji");
就这个对象而言,下面的语句都是成立(true)的。
程序代码
chris.__proto__ == Engineer.prototype;
chris.__proto__.__proto__ == WorkerBee.prototype;
chris.__proto__.__proto__.__proto__ == Employee.prototype;
chris.__proto__.__proto__.__proto__.__proto__ == Object.prototype;
chris.__proto__.__proto__.__proto__.__proto__.__proto__ == null;
根据这一点,你可以像下面这样写一个instanceOf函数:
程序代码
function instanceOf(object, constructor) {
while (object != null) {
if (object == constructor.prototype) return true;
object = object.__proto__;
}
return false;
}
有以上定义,下面的表达式都成立(true):
程序代码
instanceOf (chris, Engineer)
instanceOf (chris, WorkerBee)
instanceOf (chris, Employee)
instanceOf (chris, Object)
但是下面的表达式不成立:
程序代码
instanceOf (chris, SalesPerson)


猜你喜欢
- 小编今天写下关于后台管理员权限的分配自己的思路想法<?php /**reader * 小编的思想比较简单实现的功能
- check.asp 代码如下:<% '''''''''
- 问题一:TypeError: a bytes-like object is required, not 'str'解决:该问
- 1、自定义 图表 组件Echarts.vue<!-- 自定义 echart 组件 --><template> <
- 本文实例讲述了python简单实现基于SSL的 IRC bot。分享给大家供大家参考。具体如下:#!/usr/bin/python# -*-
- 1.语法规则1-1 代码实例sorted(iterable, key=None,reverse=False)1-2 参数说明(1)itera
- Python是一个非常实用、流行的解释型编程语言,其优势之一就是可以借助其交互的shell进行探索式地编程。你可以试着输入一些代码,然后马上
- 在python中我们学习了不少理论知识,那么对相关的程序进行测试,就显得很重要了。本篇要讲的是unittest框架,我们可以用它来做一些测试
- SQL中合并多行记录的方法总汇: --1. 创建表,添加测试数据 CREATE TABLE tb(id int, [value] varch
- 前言:1、gevent库可以轻松实现并发同步或异步编程。gevent中使用的主要模式是Greenlet,它是以C扩展模块的形式访问Pytho
- sign签名是用于提供给外部(第三方)调用的接口,调用方需要提供正确的appkey钥匙才能调用,确保了接口的安全性。签名参数sign生成方法
- 1、生成了身份证前六位地区码对照表JSON文件2、python 读取JSON文件提取码【3297】 json文件下载废话不多说,先上效果图一
- 本文实例讲述了Python调用系统底层API播放wav文件的方法。分享给大家供大家参考,具体如下:这里未使用其他库,只是使用 pywin32
- 一.思路1.整体思路2.代码思路思路很简单,就是用python发送请求,提取响应体中的状态码加以判断,最后保存到本地txt文本中,以实现网站
- 本文实例为大家分享了JavaScript实现烟花特效的具体代码,供大家参考,具体内容如下本特效使用面向对象编程分析OOA点击触发事件烟花运动
- 今天学到Python 有一个名为 random 的内置模块,可用于生成随机数,这个好玩~可以用来做为上课随机点名的程序了哈哈。。def ma
- 引言自ChatGPT出现,各种基于它的软件扩展纷至沓来,目前Word支持ChatGPT的add-in有两款,可以通过:插入->获取加载
- Python 列表理解及使用方法列表是最常用的Python最常用的数据类型,它和其它序列一样,可以进行包括索引,切片,加,乘,检查成员的操作
- python字典和JSON格式的转换首先引入 import json>>> d = {'s':'y
- 本文实例讲述了Python单例模式的使用方法。分享给大家供大家参考。具体如下:方法一import threading