js原型对象中属性被覆盖(1)
| /** | |
| *@author 程无衣 | |
| *@description 关于在原型对象中属性被覆盖 | |
| */ | |
| function Person(){} | |
| Person.prototype={ | |
| constructor:Person, | |
| age:24 | |
| } | |
| var person1= new Person(); | |
| person1.age=20; | |
| console.log(person1.age);//20 | |
| /*输出的是实例的age属性 | |
| 说明Person原型对象的age属性被实例 | |
| 的age属性覆盖了 | |
| */ | |
| var person2= new Person(); | |
| console.log(person2.age);//24 | |
| //输出的是Person的原型对象中的age属性 | |
| //--------------------------------------------------------------------- | |
| //如果说构造函数中也有属性的话会怎么样呢? | |
| function Person(){ | |
| this.age=26; | |
| } | |
| Person.prototype={ | |
| constructor:Person, | |
| age:24 | |
| } | |
| var person1= new Person(); | |
| person1.age=20; | |
| console.log(person1.age);//20 | |
| /* | |
| 我们发现实例化后的属性没有受到影响,当需要age属性 | |
| 的时候,原型链首先还是在实例的属性中搜索这个age属性 | |
| 所以我们看到person2.age的值等于20 | |
| */ | |
| var person2= new Person(); | |
| console.log(person2.age);//26 | |
| //构造函数定义的就是实例的属性,所以这里的person2的age属性是26 | |
| delete person2.age; | |
| //使用delete删除实例的属性 | |
|
console.log(person2.age);//24 console.log(person2.name);//undefined |
|
|
//正如期待的那样,实例的属性被删除后,在原型对象处搜索到了age属性 总结:在js的原型中。属性的搜索顺序是从实例属性开始,没有,再沿着原型链找到原型对象。再没有,就返回未定义。 下次加入继承再来看看是不是按照预期的实现链式查找。 未完待续 |
js原型对象中属性被覆盖(1)的更多相关文章
- JS删除对象中的某一属性(delete)
var obj= {} 1.JS对象添加新属性 obj.address="shenzhen" 2.JS删除对象中的某一属性(delete) var obj= { height: , ...
- js原型对象与Java类的比较
在我学习Javascript的原型对象时,我总是不自觉地拿Java的类思想来做比较,时间久了,我渐渐认识到二者有巨大的不同. 首先,类是不能直接当方法来运行,它最简便的方式是调用其静态方法:而原型对象 ...
- JS原型对象的问题
原型模式最大的问题是由其共享的本性所导致的.我们知道,原型中所有的成员是被很多实例共享的,这种共享对于函数非常合适.对于那些包含基本值的属性倒也说得过去,毕竟可以通过在实例上添加一个同名的属性来隐藏原 ...
- 275 原型与原型链:显式原型prototype ,隐式原型__proto__,隐式原型链,原型链_属性问题,给原型对象添加属性/方法
1.所有函数都有一个特别的属性 prototype : 显式原型属性 [普通构造函数的实例对象没有prototype 属性,构造函数有__proto__属性,原型对象有__proto__属性 ] 2. ...
- js遍历对象的属性和方法
js遍历对象的属性和方法 一.总结 二.实例 练习1:具有默认值的构造函数 实例描述: 有时候在创建对象时候,我们希望某些属性具有默认值 案例思路: 在构造函数中判断参数值是否为undefined,如 ...
- [原创]java WEB学习笔记48:其他的Servlet 监听器:域对象中属性的变更的事件监听器 (3 个),感知 Session 绑定的事件监听器(2个)
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- 域对象中属性变更及感知session绑定的事件监听器
域对象中属性的变更的时间监听器就是用来监听ServletContext,HttpSession,HttpServletRequest这三个对象中的属性变更信息事件的监听器.这三个监听器接口分别是Ser ...
- js获取对象的属性个数
for (var i = 0; i < dt.length; i++) { if (Object.keys(dt[i]).length <= 1) { dt.splice(i, 1); i ...
- js判断对象的属性是原型的还是实例的
一些情况下,我们需要知道对象的属性是原型的还是实例的,如果看代码的话比较繁琐,下面讲解下如何可以直接判断 1.hasOwnProperty()函数用于指示一个对象自身(不包括原型链)是否具有指定名称的 ...
随机推荐
- jbpm4(参数设置)
1.processDefinition.getDescription() <process name="task_test_2" xmlns="http://jbp ...
- B1:模板方法模式 TemplateMethod
定义一个操作中的算法骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤 应用场景: A.操作步骤稳定,而具体细节延迟到子类. UML: 示例代码: ...
- Androidproject师进阶之路 :《Android开发进阶:从小工到专家》上市啦!
封面 文件夹1 文件夹2 - 当当购买链接 - 京东购买链接 为什么写这本书 写这本书的念头由来已久了. 或许是从我打算写<Android源代码设计模式解析与实战>那时起就萌生了这个念头, ...
- ListView加边框
在drawable加一个xml文件 内容如下:<?xml version="1.0" encoding="UTF-8"?><shape xml ...
- Fiddler-常用技巧
1.详情面板 1).Inspectors 标签栏进行请求和响应结果分析 2).AutoResponder 对匹配 URL 进行自动返回, 可以使用字符.URL.正则表达式 3).Composer 模拟 ...
- springboot学习(九) 使用mybatis访问数据库
1.添加maven依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId ...
- 【收藏】15个常用的javaScript正则表达式(转)
0 前言 收集整理了15个常用的javaScript正则表达式,其中包括用户名.密码强度.整数.数字.电子邮件地址(Email).手机号码.身份证号.URL地址. IPv4地址. 十六进制颜色. 日期 ...
- Failed to add reference to 'System.Net.Http'. Please make sure that it is in the Global Assembly Cache.
关闭VS再来就好了
- AIX下RAC搭建 Oracle10G(六)dbca建库
AIX下RAC搭建系列 AIX下RAC搭建 Oracle10G(六)dbca建库 环境 节点 节点1 节点2 小机型号 IBM P-series 630 IBM P-series 630 主机名 AI ...
- vivado与modelsim的联合仿真(一)
vivado软件中也自带仿真工具,但用了几天之后感觉仿真速度有点慢,至少比modelsim慢挺多的.而modelsim是我比较熟悉的一款仿真软件,固然选它作为设计功能的验证.为了将vivado和mod ...