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. java IO复习(三)

    package com.zyw.io; import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; ...

  3. Away3d 骨骼动画优化

    很多朋友说Away3D 的骨骼数限制在32根,确切的说应该是Stage3D 的限制.在 AGAL2.0之前 VC寄存器是128个,每个vc常量寄存器最大只能容纳4位,transform占用一个4*4的 ...

  4. dispatch_get_current_queue 废弃

    由于iOS7以后 dispatch_get_current_queue 被废弃,所以需要寻找一个替代的方案. 发现 dispatch_get_current_queue 并没有字面上那么简单. 这个函 ...

  5. android 52 粘滞广播

    粘滞广播:广播发送出去以后,广播接收者还没有创建,当广播接收者注册的时候就可以接收,如果不是粘滞广播则如果没有广播接收者就以后不能再接收了. mainActivity: package com.sxt ...

  6. MYSQL查询计划KEY_LEN

    http://www.innomysql.com/article/25241.html 1 key_len的含义 2 MySQL中key_len计算规则 3 通过key_len分析联合索引 本文首先介 ...

  7. iOS获取健康步数从加速计到healthkit

    计步模块接触了一年多,最近又改需求了,所以又换了全新的统计步数的方法,整理一下吧. 在iPhone5s以前机型因为没有陀螺仪的存在,所以需要用加速度传感器来采集加速度值信息,然后根据震动幅度让其加入踩 ...

  8. weex APIs

    1.通过这个$vm()上下文访问这些api在脚本的方法 <script> module.exports = { methods: { somemethod: function() { th ...

  9. HashMap HashTable HashSet

    原文转载自 http://blog.csdn.net/wl_ldy/article/details/5941770 HashMap是新框架中用来代替HashTable的类 也就是说建议使用HashMa ...

  10. c# 左连接写法

    var itemandformulas = from i in AttendanceItemList join f in AttendanceFormulaList on i.AttendanceCo ...