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.对象是通过函数创建,并且强调,对象字面 ...
随机推荐
- 怎样打开64位 Ubuntu 的32位支持功能?
怎样打开64位 Ubuntu 的32位支持功能? 现在有一个让你可以在64位系统中使用32位软件的方法,就在你读了这篇文章然后照着做了之后就可以了.如果你有一个13.10或更高版本的Ubuntu/De ...
- margin设置为负数
1.为负margin“平反” 我们在CSS中都会使用margin,但将margin设置成负数,那可能就不大好处理了.在网页设计中,人们对负margin用法的态度大相径庭,有的人非常喜欢,而有的人则认为 ...
- [转载]Div和Table的区别
1:速度和加载方式方面的区别 div 和 table 的差异不是速度,而是加载方式,速度只能是指网络速度,如果速度足够快,是没有差异的: div 的加载方式是即读即加载,遇到 <div> ...
- Getting Started · Building a RESTful Web Service
Getting Started · Building a RESTful Web Service undefined
- kafka consumer频繁reblance
转载请注明地址http://www.cnblogs.com/dongxiao-yang/p/5417956.html 结论与下文相同,kafka不同topic的consumer如果用的groupid名 ...
- C#与C++函数调用
在 上篇文章重点讲解数据类型的转换,在此基础上再讲解函数调用. 1.函数调用 c++中函数 INF_NET_API INF_RESULT WINAPI INF_NET_GetList(long lLo ...
- Tomcat配置多个端口号或多个应用
一.在Tomcat下配置一个应用服务(service)中,配置多个端口号. 即一个service配置多个端口,项目可以通过多个端口访问. 修改tomcat-home\conf下的server.xml, ...
- Scrapy的shell命令(转)
scrapy python MrZONT 2015年08月29日发布 ...
- [Reactive Programming] Async requests and responses in RxJS
We will learn how to perform network requests to a backend using RxJS Observables. A example of basi ...
- 通知模式实现两个textField传值及模态视图——iOS开发
通知模式实现两个textField传值及模态视图--iOS开发 利用通知模式,实现两个不同界面的textField之间的传值,在界面二输入字符,传值到前一界面的textField. 界面的切换,这里临 ...