prototype/constructor/__proto__之prototype
1任何对象都有__proto__属性 属性值Object
2并不是所有对象都有prototype属性。只有方法对象(构造函数)以及基本数据类型还有Array,有prototype属性;并且所有方法(对象)的prototype属性都是object
在网上有很多关于原型的讲解。在这里我用console.log()的方式给大家呈现。
//一、基本数据类型的原型 //console.log(String) String() 这时我们可以把它理解为构造函数 //console.log(typeof String) function //console.log(String.prototype) String {} //console.log(typeof String.prototype) object 说明String的prototype属性是一个object对象,既然是对象我们就可以给他添加属性或者方法。 String.prototype.cf=function(n){ //给String.prototype这个obj添加方法cf,字符串乘法 return new Array(n+1).join(this) } var str="cmf" //console.log(str.cf(10)) cmfcmfcmfcmfcmfcmfcmfcmfcmfcmf //console.log(String.prototype) String { cf=function()} String的原型是一个对象(obj)它有cf属性,这个属性对应着一个方法。 //二、构造函数的原型 function Info(m,n){ //构造函数 this.m=m this.n=n this.mn=m+"|"+n } //var 什么东西前面可以加var 基本数据类型(String Number true underfind) 或者 obj(null function Array) //var info=new Info('cmf','man') //console.log(typeof info) object 通过构造函数实例化出来的都是obj //console.log(info) // info { m="cmf", n="man", mn="cmf|man"} //console.log(typeof Info) //function 前面说过方法对象(构造函数)有prototype属性 //console.log(Info.prototype) // Info {} //console.log(typeof Info.prototype) //object Info.prototype属性是一个对象,是对象我们就给可以给他定义方法或者属性。 //给构造函数原型(obj)定义方法(属性) Info.prototype.name=function(){ return this.m+'name' } Info.prototype.age='18' var info2=new Info('cmf','man') //实例化 /* age:"18"在原型上 m:"cmf" console.log(info2) mn:"cmf|man" n:"man" name:function()在原型上 */ //console.log(info.name()) //三 为什么只有 方法对象以及基本数据类型有prototype属性,它们两有什么相似的地方 //第一个问题我不知道 //第二个问题 var str1=new String('adq') var str2='xhb' var str3='adq' var arry=new Array(1) var arry2=new Array(2) /* console.log(typeof str1) //object console.log(typeof str2) //string console.log(str1.cf(8)) //adqadqadqadqadqadqadqadq console.log(str2.cf(8)) //xhbxhbxhbxhbxhbxhbxhbxhb console.log(str1==str3) //true console.log(str1===str3) //false 怎么理解呢 我们把所有的东西都理解为obj。基本数据类型理解为一个特殊的obj。
把上面的代码自己console.log一遍应该有体会了。
prototype/constructor/__proto__之prototype的更多相关文章
- prototype/constructor/__proto__之prototype简单应用
一.简单使用构造原型加prototype造简单的轮子. 1.想jQ那样获取HTML元素,先看JS代码 function Cmf() { //创建构造函数 this.arry = [] } Cmf.pr ...
- 原型模式Prototype,constructor,__proto__详解
最近由于在找工作,又拿起<JavaScript高级程序设计>看了起来,从中也发现了自己确实还是有很多地方不懂,刚刚看到原型模式这里,今天终于搞懂了,当然,我也不知道自己的理解是否有错. 1 ...
- prototype/constructor/__proto__之constructor。
1.constructor的字面意思就是构造.它是对象的一个属性,它对应的值是该对象的“构造者” //一.构造函数实例化的对象的constructor function Cmf(n,m){ this. ...
- prototype constructor __proto__
constructor, prototype, __proto__ 详解
- Js中Prototype、__proto__、Constructor、Object、Function关系介绍
一. Prototype.__proto__与Object.Function关系介绍 Function.Object:都是Js自带的函数对象.prototype,每一个函数对象都有一个显式的proto ...
- 15条规则解析JavaScript对象布局(__proto__、prototype、constructor)
大家都说JavaScript的属性多,记不过来,各种结构复杂不易了解.确实JS是一门入门快提高难的语言,但是也有其他办法可以辅助记忆.下面就来讨论一下JS的一大难点-对象布局,究竟设计JS这门语言的人 ...
- javascript--15条规则解析JavaScript对象布局(__proto__、prototype、constructor)
大家都说JavaScript的属性多,记不过来,各种结构复杂不易了解.确实JS是一门入门快提高难的语言,但是也有其他办法可以辅助记忆.下面就来讨论一下JS的一大难点-对象布局,究竟设计JS这门语言的人 ...
- 【转】Js中Prototype、__proto__、Constructor、Object、Function关系介绍
一 Prototype.__proto__与Object.Function关系介绍 Function.Object:Js自带的函数对象. prototype,每一个 ...
- 一篇彻底理解JS中的prototype、__proto__与constructor
1.基本类型不是对象(boolean.undefined.number.string) 2.引用类型都是对象(Array,function ,Object) 3.对象是通过函数创建,并且强调,对象字面 ...
随机推荐
- 把mysql 中的字符gb2312 改为gbk的方法
第一步:查找mysql的字符: mysql> show variables like '%char%';+--------------------------+----------------- ...
- November 4th Week 45th Friday 2016
Problems are not stop signs, they are guidelines. 问题不是休止符,而是指向标. Most of the problems can be overcom ...
- 更改Tomcat startup.bat启动窗口名称
通常在Tomcat bin目录下用startup.bat启动Tomcat ,启动窗口显示的Title是Tomcat 如果遇到一个服务器上多个Tomcat的话就会容易混淆.更改方法如下: 1 在bin目 ...
- 推荐一个网站——聚合了微软的文件的Knowledge Base下载地址
Microsoft Files是一个微软的文件数据库,从这里可以很方便的找到各个文件版本对应的下载链接. 比如今天debug需要找一个特定版本的sos.dll,从这个网站就很方便的给出了这个sos.d ...
- NULL不能和任何字段比较和运算
UPDATE dbo.PayPalPaymentInfo SET GrossAmount=TotalPrice+TaxAmount WHERE GrossAmount IS NULL --如果TaxA ...
- docker 服务注册
docker 服务注册 etcd docker run -d --name etcd -p 4001:4001 -p 7001:7001 elcolio/etcd
- java websockect
https://github.com/TooTallNate/Java-WebSocket (websockect类库包) http://blog.openlg.net/index.php/archi ...
- OSChina 的全文搜索设计说明 —— 索引过程
http://www.oschina.net/question/12_71591 言: OSChina 的搜索做得并不好,很久之前一直想在细节方面进行改造,一直也没什么好的思路.但作为整体的结构或许对 ...
- char* 和char[]的差别
下面内容均来自互联网,系笔者汇总并总结. 1. 问题介绍 问题引入: 在实习过程中发现了一个曾经一直默认的错误,相同char *c = "abc"和char c[]="a ...
- Visual Studio 调试技巧 -- 为 Lambda 表达式设置中断
如果我说 .NET 世界上最厉害的开发平台(语言),资深的同仁肯定不会往下看了,因为这将是一个无休止的争论,到头来搞不好还是人身攻击.然而,如果我说 Visual Studio 是世界上最友好最强大的 ...