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的更多相关文章

  1. prototype/constructor/__proto__之prototype简单应用

    一.简单使用构造原型加prototype造简单的轮子. 1.想jQ那样获取HTML元素,先看JS代码 function Cmf() { //创建构造函数 this.arry = [] } Cmf.pr ...

  2. 原型模式Prototype,constructor,__proto__详解

    最近由于在找工作,又拿起<JavaScript高级程序设计>看了起来,从中也发现了自己确实还是有很多地方不懂,刚刚看到原型模式这里,今天终于搞懂了,当然,我也不知道自己的理解是否有错. 1 ...

  3. prototype/constructor/__proto__之constructor。

    1.constructor的字面意思就是构造.它是对象的一个属性,它对应的值是该对象的“构造者” //一.构造函数实例化的对象的constructor function Cmf(n,m){ this. ...

  4. prototype constructor __proto__

    constructor, prototype, __proto__ 详解

  5. Js中Prototype、__proto__、Constructor、Object、Function关系介绍

    一. Prototype.__proto__与Object.Function关系介绍 Function.Object:都是Js自带的函数对象.prototype,每一个函数对象都有一个显式的proto ...

  6. 15条规则解析JavaScript对象布局(__proto__、prototype、constructor)

    大家都说JavaScript的属性多,记不过来,各种结构复杂不易了解.确实JS是一门入门快提高难的语言,但是也有其他办法可以辅助记忆.下面就来讨论一下JS的一大难点-对象布局,究竟设计JS这门语言的人 ...

  7. javascript--15条规则解析JavaScript对象布局(__proto__、prototype、constructor)

    大家都说JavaScript的属性多,记不过来,各种结构复杂不易了解.确实JS是一门入门快提高难的语言,但是也有其他办法可以辅助记忆.下面就来讨论一下JS的一大难点-对象布局,究竟设计JS这门语言的人 ...

  8. 【转】Js中Prototype、__proto__、Constructor、Object、Function关系介绍

    一    Prototype.__proto__与Object.Function关系介绍        Function.Object:Js自带的函数对象.         prototype,每一个 ...

  9. 一篇彻底理解JS中的prototype、__proto__与constructor

    1.基本类型不是对象(boolean.undefined.number.string) 2.引用类型都是对象(Array,function ,Object) 3.对象是通过函数创建,并且强调,对象字面 ...

随机推荐

  1. HDOJ/HDU 2547 无剑无我(两点间的距离)

    Problem Description 北宋末年,奸臣当道,宦官掌权,外侮日亟,辽军再犯.时下战火连连,烽烟四起,哀鸿遍野,民不聊生,又有众多能人异士群起而反,天下志士云集响应,景粮影从. 值此危急存 ...

  2. HDOJ/HDU 2535 Vote(排序、)

    Problem Description 美国大选是按各州的投票结果来确定最终的结果的,如果得到超过一半的州的支持就可以当选,而每个州的投票结果又是由该州选民投票产生的,如果某个州超过一半的选民支持希拉 ...

  3. Bzoj 1612: [Usaco2008 Jan]Cow Contest奶牛的比赛 传递闭包,bitset

    1612: [Usaco2008 Jan]Cow Contest奶牛的比赛 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 891  Solved: 590 ...

  4. Oracle表空间扩展

    From:http://blog.csdn.net/starnight_cbj/article/details/7398153 1.查看所有表空间使用情况 select b.file_id 文件ID号 ...

  5. [CSS]利用伪元素实现一些特殊图形

    给定的html代码是: <div class='square'></div> 平常实现我们常是通过添加小的icon来实现,不仅需要添加图片资源,还需要改动html结构. CSS ...

  6. Corn Fields - POJ 3254(状态压缩)

    题目大意:有一个M*N的牧场,G(i, j) = 1表示这块地营养丰富,可以喂养牛,等于0表示贫瘠,不能喂养牛,所有的牛都讨厌与别的牛相邻,求有多少种放置牛的方式. 分析:算是炮兵那个题的弱化版吧,先 ...

  7. PHP运行出现Notice : Use of undefined constant 的完美解决方案

    Notice: Use of undefined constant title - assumed 'title' in F:\wamp\www\load_myweb.php on line 22No ...

  8. ZEDBOARD启动自启配置(加载镜像) 分类: OpenCV ubuntu shell ZedBoard Eye_Detection 2014-11-08 18:53 167人阅读 评论(0) 收藏

    参考:陆书14.2.8 1)备份ramdisk8M.image.gz 2)加载rootfs镜像文件: 3)在镜像目录下建立自己所需文件夹(挂载目录): 我需要的挂载目录有两个: root/qt/ins ...

  9. [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 ...

  10. JWS-webservice 与Axis2-webservice的高速实现

    在详细介绍这两种框架下的webservice之前,先跟大家交流一下SOA认识,也就是面向服务的体系结构.SOA所要解决的主要问题是在现有基础环境的前提下,通过对现有应用程序和基础结构进行又一次的组合以 ...