js原型和原型链理解 constructor 构造函数
一.对象:普通对象 函数对象
二.构造函数特点:1.需要new实例化,内部使用this对象指向即将要生成的实例对象 2.首字母大写,用于区分普通函数
function Person(name){
this.name=name
}
var person1=new Person('xiaohong')
var person2=new Person('lili')
person1.constructor=Person constructor指向构造函数,Person的内置属性 Person.prototype(函数对象),每个原型对象都有一个constructor属性,指向prototype属性所在的函数Person
即person1.constructor=person2.constructor=Person.prototype.constructor
通过原型实现继承
三.__proto__,每个对象都有这个属性指向创建他的构造函数的原型即person1.__proto__=Person.prototype
//var obj={}
var obj=new Object();
obj.constructor===Object
obj.__proto__===Object.prototype
person1.__proto__是Person.prototype
Person.__proto__是Person是构造函数,Function,即Function.prototype
Person.prototype._proto__是 Person.prototype是原型对象,Object,即Object.prototype
Object.__proto__是 Objext是构造行数Function 即Function.prototype
Object.prototype.__ptoto__是 Object.prototype的原型对象的__proto__指向构造函数的prototype,处于顶层是null
四。Math和Json是以对象存在的 即Math.__proto__===Object.prototype
五。Function.prototype是唯一一个typeof Function.prototype是function的prototype,其他构造器的prototype都是object
六。注意constructor的指向例如
function Animal(){ }
Animal.prototype.age='20' function Cat(name,color){
this.name = name
this.color = color
this.name2 = '11112222'
}
Cat.prototype = new Animal();
Cat.prototype.type="猫"
Cat.prototype.eat=function(){
console.log('爱吃鱼')
}
function Dog(name){
this.name=name
}
Dog.prototype = new Animal();
Dog.prototype={
getName:function(){
console.log('gougou')
}
}
Cat.prototype.constructor === Animal Dog.prototype.constructor===Object 两者不相同,后者是重写Animal.prototype,前者是修改。
七。
- 原型和原型链是JS实现继承的一种模型。
- 原型链的形成是真正是靠
__proto__
而非prototype
js原型和原型链理解 constructor 构造函数的更多相关文章
- Js中关于构造函数,原型,原型链深入理解
在 ES6之前,在Javascript不存在类(Class)的概念,javascript中不是基于类的,而是通过构造函数(constructor)和原型链(prototype chains)实现的.但 ...
- JS中面向对象的,对象理解、构造函数、原型、原型链
6.1 理解对象 6.1.1 对象属性类型 ECMS属性有两种类型:数据属性和访问器属性 1 数据属性 [[configurable]] 表示能否通过Delete 删除属性从而从新定义属性,能否修改属 ...
- 探索js原型链和vue构造函数中的奥妙
这篇文章首先会讲到原型链以及原型链的一些概念,然后会通过分析vue的源码,来看一下vue的构造函数是如何被创建的,now we go! 一.什么是原型链? 简单回顾下构造函数,原型和实例的关系: ...
- 理解JS原型和原型链
本文通过对<JavaScript高级程序设计>第六章的理解,加上自己的理解,重组了部分内容,形成下面的文字. 理解了原型这个概念,你的JS世界会清明很多. 为什么要为JS创造原型这个概念 ...
- Js笔记(对象,构造函数,原型,原型链,继承)及一些不熟悉的语法
对象的特性: 1.唯一标识性,即使完全不一样的对象,内存地址也不同,所以他们不相等 2.对象具有状态,同一个对象可能处在不同状态下 3.对象具有行为,即对象的状态可能因为他的行为产生变迁 Js直到es ...
- 前端总结·基础篇·JS(一)原型、原型链、构造函数和字符串(String)
前端总结系列 前端总结·基础篇·CSS(一)布局 前端总结·基础篇·CSS(二)视觉 前端总结·基础篇·CSS(三)补充 前端总结·基础篇·JS(一)原型.原型链.构造函数和字符串(String) 前 ...
- JS原型、原型链、构造函数、实例与继承
https://cloud.tencent.com/developer/article/1408283 https://cloud.tencent.com/developer/article/1195 ...
- JS基础-该如何理解原型、原型链?
JS的原型.原型链一直是比较难理解的内容,不少初学者甚至有一定经验的老鸟都不一定能完全说清楚,更多的"很可能"是一知半解,而这部分内容又是JS的核心内容,想要技术进阶的话肯定不能对 ...
- javascript系列--认识并理解构造函数,原型和原型链
一.前言 介绍构造函数,原型,原型链.比如说经常会被问道:symbol是不是构造函数:constructor属性是否只读:prototype.[[Prototype]]和__proto__的区别:什么 ...
随机推荐
- NOIP 模拟 7 回家
题解 题目 第一眼,板子题,不就是一个缩点吗?后来一想不对,哪有这么傻的出题人呢,出个这水题. 一想,不对,不仅要求割点,还要判断这个割点是否在搜索树 \(n\) 的祖先上.想到这后,我哈哈大笑,还想 ...
- NOIP 模拟 $21\; \rm Median$
题解 \(by\;zj\varphi\) 对于这个序列,可以近似得把它看成随机的,而对于随机数列,每个数的分布都是均匀的,所以中位数的变化可以看作是常数 那么可以维护一个指向中位数的指针,同时维护有多 ...
- C# 通过反射实现对象映射:将2个属性相近的对象相互转换
前言 我们在编程过程中,经常需要将一个对象转成另一个对象(一般称为对象映射). 比如我们有2个类: //第1个类 CLS1 class CLS1 { public int i {get; set;} ...
- 【译】flutter中如何较好地实现隐藏和显示widget
通常情况下,显示有四种情况: 1.(visible)显示 2.(invisible)隐藏: 这种隐藏是指在屏幕中占据空间,只是没有显示.这种情况出现场景如:用带有背景色的Container Widge ...
- vue项目打包 部署nginx服务器 访问远程接口 本地json 跨域问题
本文建立在你已经在windows7上已经配好了nginx的前提下进行!!! 如果没有请移步至:https://www.cnblogs.com/jack1208-rose0203/p/5739765.h ...
- Socket编程 Tcp和粘包
大多数程序员都要接触网络编程,Web开发天天和http打交道.稍微底层一点的程序员,就是TCP/UDP . 对程序员来说,Tcp/udp的核心是Socket编程. 我的浅薄的观点---------理解 ...
- Linux第一个动态库
动态库一般以.so结尾,就是shared object的意思. 其基本生成步骤为 ⑴编写函数代码 ⑵编译生成动态库文件,要加上 -shared 和 -fpic 选项 , 库文件名以li ...
- js获取文件名和后缀名
- C#·好文分享
时间:2018-11-14 记录:byzqy 好文收藏,集中分享! 标题:C#接口<通俗解释> 地址:https://www.cnblogs.com/hamburger/p/4681681 ...
- 树莓派4B切换国内源-亲测有效
参考:https://blog.csdn.net/qq_30290661/article/details/103386997 修改/etc/apt/sources.list,去掉自带的源,添加如下源: ...