js原型链。。fuck
function Person(name){
this.name = name;
};
function Mother(){ };
//给mother提供公有的属性
Mother.prototype = {
age:18,
home:['Beijing','Shanghai']
}
//Person的属性 指向Mother的原型
Person.prototype = new Mother();
//实例化
var p1 = new Person('jack');//通过p1.__proto__ 可以查到p1和p2的原型是一样的。age:18 home:Beijing Shanghai
var p2 = new Person('viven');
p1.age = 118;
console.log(p1.age); //
console.log(p2.age);//
//通过__proto__查看到p1的原型还是没变,但是p1多了一个age属性 值为118,也就是说实例不能改变原型的属性
p1.home[0] = 'Shenzhen';
console.log(p1.home);// Shenzhen Shanghai
console.log(p2.home);// Shenzhen Shanghai 因为原型中的引用类型的值是共享的,可以改变
//同样可以和上面一样,改变原型的属性
p1.home =['guangzhou','hangzhou'];
console.log(p1.home);
console.log(p2.home); //改变不了,只是给p1添加了一个home的属性
//可以通过delete 来删除实例的属性
delete p1.age;
console.log(p1.age); //
//改写原型
Person.prototype.name = 'kevin';
delete p1.name;
console.log(p1.name);//kevin 给Person的原型添加了一个name 属性,但是会被实例p1的name 覆盖
//重写原型
Person.prototype = {
age: 28,
address: { country: 'USA', city: 'Washington' }
};
var p3 = new Person('Obama');//原型重写后和Mother没有一点关系了。。
//改写Mother原型
Mother.prototype.no = 9527; //p1 p2有联系,但是p3没有关系
//重写Mother原型
//外婆赚钱了,买了2辆车,谁有一份呢?
Mother.prototype = {
car:2,
carname:['benchi','baoma']
}
var p4 = new Person('join'); //谁都没有份,因为Person和Mother已经断绝关系了。。。
//为了车和你外婆和好
Person.prototype =new Mother();
var p5 = new Person('lala');//你外婆不认你们,只认这个外甥女
js原型链。。fuck的更多相关文章
- JS原型链
JS作为发展了多年了对象语言,支持继承,和完全面向对象语言不同的是,JS依赖原型链来实现对象的继承. 首先JS的对象分两大类,函数对象和普通对象,每个对象均内置__proto__属性,在不人为赋值__ ...
- 深入分析JS原型链以及为什么不能在原型链上使用对象
在刚刚接触JS原型链的时候都会接触到一个熟悉的名词:prototype:如果你曾经深入过prototype,你会接触到另一个名词:__proto__(注意:两边各有两条下划线,不是一条).以下将会围绕 ...
- js原型链与继承(初体验)
js原型链与继承是js中的重点,所以我们通过以下三个例子来进行详细的讲解. 首先定义一个对象obj,该对象的原型为obj._proto_,我们可以用ES5中的getPrototypeOf这一方法来查询 ...
- JS 原型链图形详解
JS原型链 这篇文章是「深入ECMA-262-3」系列的一个概览和摘要.每个部分都包含了对应章节的链接,所以你可以阅读它们以便对其有更深的理解. 对象 ECMAScript做为一个高度抽象的面向对象语 ...
- 深入理解JS原型链与继承
我 觉得阅读精彩的文章是提升自己最快的方法,而且我发现人在不同阶段看待同样的东西都会有不同的收获,有一天你看到一本好书或者好的文章,请记得收藏起来, 隔断时间再去看看,我想应该会有很大的收获.其实今天 ...
- js 原型链和继承(转)
在理解继承之前,需要知道 js 的三个东西: 什么是 JS 原型链 this 的值到底是什么 JS 的 new 到底是干什么的 1. 什么是 JS 原型链? 我们知道 JS 有对象,比如 var ob ...
- 一张图看懂 JS 原型链
JS 原型链,画了张图,终于理清楚各种关系有木有 写在最后: __proto__是每个对象都有的一个属性,而prototype是函数才会有的属性!!! function Person() { } 是函 ...
- 简单粗暴地理解js原型链–js面向对象编程
简单粗暴地理解js原型链–js面向对象编程 作者:茄果 链接:http://www.cnblogs.com/qieguo/archive/2016/05/03/5451626.html 原型链理解起来 ...
- JS原型链与继承别再被问倒了
原文:详解JS原型链与继承 摘自JavaScript高级程序设计: 继承是OO语言中的一个最为人津津乐道的概念.许多OO语言都支持两种继承方式: 接口继承 和 实现继承 .接口继承只继承方法签名,而实 ...
- 02 js原型链
1 js原型链是一个绕不开的话题.直接上说吧. /** * 1. js里的原型链是怎么样的? 带class 和不带class的原型链的不同. */ const util = require('util ...
随机推荐
- 《JavaScript高级程序设计》读书笔记(五)引用类型
内容---使用对象---创建并操作数组---理解基本的JavaScript类型---使用基本类型和基本包装类型 引用类型--引用类型的值(对象)是引用类型的一个实例--在ECMAScript中,引用类 ...
- 安卓开发:Password verification failed
2019年8月5日更新: 我把Android Studio升级到3.4.2版本后,发现下图中的按钮已经不见了,所以本文中之前的创建签名文件的方法已经不行了- ...3.4.2版本是这样的---> ...
- STM32内部时钟树
1.外部晶振是干什么用的? 2.内部晶振是干什么用的? 3.外部晶振频率的大小能影响什么?
- 在CDN不能使用的时候加载自己服务器的资源
<script src="http://wlib.sinaapp.com/js/jquery/1.7.2/jquery.min.js"></script> ...
- python 切片技巧
说明: 字符串[开始索引:结束索引:步长] 开始索引:从指定位置开始截取: 结束索引:从指定位置结束截取,但不包含该位置的字符. 步长:不指定时步长为1: 1)当步长为正数时候,那么切片是从左到右进行 ...
- Kubernetes的pod控制器及ReplicaSet控制器类型的pod的定义
为什么需要Pod Kubernetes项目之所以这么做的原因: 因为Kubernetes是谷歌公司基于Borg项目做出来的,谷歌工程师发现,他们部署的应用往往存在这进程与进程组的关系.具体说呢,就是这 ...
- CF10D LCIS 最长公共上升子序列
题目描述 This problem differs from one which was on the online contest. The sequence a1,a2,...,an a_{1}, ...
- 第七届蓝桥杯javaB组真题解析-剪邮票(第七题)
题目 /* 剪邮票 如[图1.jpg], 有12张连在一起的12生肖的邮票. 现在你要从中剪下5张来,要求必须是连着的. (仅仅连接一个角不算相连) 比如,[图2.jpg],[图3.jpg]中,粉红色 ...
- C++代码如何附加到C#写的主程序中?
背景是这样:C#的exe程序,C#中调用C++的dll,也就是所谓的托管吧. C#的exe出了点问题,想在C++的dll的源码中调试,附加到进程时,加了断点,怎么也跟不进去.断点不变红啊,急死了. 最 ...
- ubuntu 更改pip默认源
mkdir ~/.pip vim ~/.pip/pip.conf [global] timeout = 6000 https://pypi.tuna.tsinghua.edu.cn/simple 保存 ...