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. (经常看看)jdk 设计模式

    在JDK(Java Development Kit)类库中,开发人员使用了大量设计模式,正因为如此,我们可以在不修改JDK源码的前提下开发出自己的应用软件,本文列出了部分JDK中的模式应用实例,有兴趣 ...

  2. Top 10 Java Debugging Tips with Eclipse

    In this tutorial we will see about debugging java applications using Eclipse. Debugging helps us to ...

  3. firefox如何restart重启

    1.开发者工具栏可以对firefox进行重启,不是关闭firefox又打开那种重启

  4. Qt对话框QDialog

    QDialog是Qt中所有对话框窗口的基类 当QWidget无父组件的时候作为一个独立的窗口,有父组件的时候,将作为一个可见的部件嵌入到父组件里面. QDialog不能作为子部件嵌入到其他容器中 对话 ...

  5. 【转】eclipse插件:OpenExplorer快速打开文件目录

    在MyEclipse开发中常用到其中一个"Open In Explorer"的小插件,可以直接进入Windows资源管理器中打开选中文件所在的目录,在使用eclipse开发时也很需 ...

  6. form与action之setter与getter(转)

    对于表单提交数据给action时候,可以简单的用setter与getter函数实现值的传递. 例如在jsp里有这么个form: <s:form action="login"& ...

  7. clock_gettime测代码运行时间

    //函数原型: // long clock_gettime (clockid_t which_clock, struct timespec *tp); //参数列表: // CLOCK_REALTIM ...

  8. windows使用python调用wget批处理下载数据

    wget是linux/unix下通常使用的下载http/ftp的数据,使用非常方便,其实wget目前经过编译,也可在windows下使用.最近需要下载大量的遥感数据,使用了python写了批处理下载程 ...

  9. codevs1380 没有丧尸的舞会

    /* 树形DP 而然我并不知道树在哪(....) f[x][0]表示x节点不参加舞会 以x为根的子树的最优解 f[x][1]表示x节点参加舞会 以x为根的子树的最优解 方程为:(so为x的儿子 so要 ...

  10. PHP操作Oracle数据库

    原文出处 (这是来自“百度文库”中的文章写得很不错) PHP操作Oracle数据库(OCI数据抽象层)OCI(Oracle 8 Call-Interface)是PHP中内置的数据库抽象层函数.下面针对 ...