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.对象是通过函数创建,并且强调,对象字面 ...
随机推荐
- SRM 601(1-250pt,500pt)
DIV1 250pt 题意:有很多袋子,里面装有苹果和橘子(也可能没有),给出每个袋子里有多少个苹果,多少个橘子.如果每个袋子里含有水果的总数都不小于x个,则可以从每个袋子里都拿出x个水果(拿出苹果和 ...
- GCC的编译和安装 很好的资料
http://blog.csdn.net/yrj/article/details/492404 1.GCC的编译和安装2.预处理 #define 可以支持不定数量的参数. 例子如下: ...
- Transaction: atomicity, consistency, separability, persistence
Transaction: atomicity, consistency, separability, persistence http://langgufu.iteye.com/blog/143440 ...
- Docker官方文档翻译之入门
转自:http://www.cnblogs.com/vikings-blog/p/3958091.html Docker学习总结之docker入门 Understanding Docker 以下均翻译 ...
- ASP中Utf-8与Gb2312编码转换乱码问题的解决方法 页面编码声明
ASP程序在同一个站点中,如果有UTF-8编码的程序,又有GB2312编码的程序时,在浏览UTF-8编码的页面后,再浏览当前网站GB2312的页面,GB2312编码的页面就会出现乱码 出现这样的问题是 ...
- 【Android - 框架】之Fresco的使用
当下有很多图片加载框架,常见的有Glide.Fresco.Picasso等.Glide因为其体积小.缓存机制强大等优点,受到了广大程序员的青睐:Fresco虽然体积比较大,缓存机制也没有Glide强大 ...
- JSP ---- 声明、表达式、脚本、注释
声明 在 JSP 页面中 , 可以声明一个或者多个合法的变量和方法 , 声明后的变量和方法可以在本 JSP 页面的任何位置使用 , 并将在 JSP 页面初始化时被初始化 语法格式如下 : <!% ...
- sublime Text3配置及快捷键、插件推荐总结
一.基础 1.重要文档: sublime Text3官方文档中文版:http://feliving.github.io/Sublime-Text-3-Documentation/ sublime Te ...
- ssss
18:15 2013/6/18 未结束的事情1 应用API接口切换2 03in.com 项目管理授权 软件中不成功3 党校考核时间 段列出所有 10:51 2013/6/20 daili 应用修改1 ...
- centos6.4安装flashcache
FlashCache呢是Facebook技术团队的又一力作,最初是为加速MySQL设计的.Flashcache是在Linux层面的,所以任何受磁盘IO困绕的软件或应用都可以方便的使用.为什么是用于加速 ...