JavaScript中的prototype】的更多相关文章

最近在学js,体会了一点点它的灵活性.对于初学者的我,总是被它的灵活感到晕头转向,最近发现了一点东西想与大家分享. JavaScript中的prototype和_proto_: 我们先了解一点js中的基础知识,首先我们先看一段js代码: var object = new Object; console.log("object:", object); object.member1 = "abcd"; var obj = {}; obj.member1 = 10; co…
在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. ? 1 2 var arr = []; console.log(Object.prototype.toString.call(arr)) //"[object Array]" 本文要讲的就是,toString方法是如何做到这一点的,原理是什么. ECMAScript 3 在ES3中,Object.prototype.toString方法的规范如下:…
谈谈javascript中的prototype与继承 今天想谈谈javascript中的prototype. 通常来说,javascript中的对象就是一个指向prototype的指针和一个自身的属性列表.javascript创建对象时采用了写时复制的理念. 只有构造器才具有prototype属性,原型链继承就是创建一个新的指针,指向构造器的prototype属性. prototype属性之所以特别,是因为javascript时读取属性时的遍历机制决定的.本质上它就是一个普通的指针.   构造器…
在Javascript面向对象编程中经常需要使用到this,prototype和constructor这3个关键字. 1.首先介绍一下this的使用:this表示当前对象;如果在全局中使用this,则this为当前页面对象window;如果在函数中使用this,则this为调用该函数的对象;可以使用apply和call两个全局函数来改变this的指向. 接下来,首先通过几个demo程序验证一下: function testFunction(){ console.log(this.variable…
Javascript也是面向对象的语言,但它是一种基于原型Prototype的语言,而不是基于类的语言.在Javascript中,类和对象看起来没有太多的区别. 通常,这样创建一个对象: function person(name){ this.sayHi = function(){ alert('hi ' + this.name); } this.name = name; } var p = new person("dan"); p.sayHi(); 以上,使用new关键字,通过对象(…
通常来说,javascript中的对象就是一个指向prototype的指针和一个自身的属性列表.javascript创建对象时采用了写时复制的理念. 只有构造器才具有prototype属性,原型链继承就是创建一个新的指针,指向构造器的prototype属性. prototype属性之所以特别,是因为javascript时读取属性时的遍历机制决定的.本质上它就是一个普通的指针.   构造器包括: 1.Object 2.Function 3.Array 4.Date 5.String 下面我们来举一…
Javascript也是面向对象的语言,但它是一种基于原型Prototype的语言,而不是基于类的语言.在Javascript中,类和对象看起来没有太多的区别. 什么是prototype: function定义的对象有一个prototype属性,prototype属性又指向了一个prototype对象,注意prototype属性与prototype对象是两个不同的东西,要注意区别.在prototype对象中又有一个constructor属性,这个constructor属性同样指向一个constr…
JS中的prototype是JS中比较难理解的一个部分 本文基于下面几个知识点: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展.我们称B的原型为A. 2 javascript的方法可以分为三类: a 类方法 b 对象方法 c 原型方法 例子: function People(name) {   this.name=name;   //对象方法   this.Introduce=fu…
转载至http://www.cnblogs.com/sinstone/p/5136871.html   一.联系 prototype和__proto__都指向原型对象,任意一个函数(包括构造函数)都有一个prototype属性,指向该函数的原型对象,同样任意一个构造函数实例化的对象,都有一个__proto__属性(__proto__并非标准属性,ECMA-262第5版将该属性或指针称为[[Prototype]],可通过Object.getPrototypeOf()标准方法访问该属性),指向构造函…
prototype初步认识 在学习JavaScript中,遇到了prototype,经过一番了解,知道它是可以进行动态扩展的 function Func(){}; var func1 = new Func; console.log(func1.var1) //undefined Func.prototype.var1 = "Func进行了扩展" console.log(func1.var1) //Func进行了扩展 即最开始创建的函数Func并没有var1变量,但是我们可以进行扩展,并…
来源:http://www.jb51.net/article/5769.htm JavaScript中对变量的操作都是通过引用方式,而对数组也一样. 前两天想要对一个数组进行复制,一直苦于找不到办法(遍历的方法俺是绝对不采用的) 无意中拿起<JavaScript权威指南>翻了翻数组的操作函数,发现了slice()函数. slice()原来是用来截取数组中的一部分,这里我用它来复制数组,它的格式如下: array.slice(start, end) 如果省略了end参数,则切分的数组包含从sta…
关于prototype: 理解prototype不应把它和继承混淆.A的prototype为B的一个实例,可以理解A将B中的方法和属性全部克隆了一遍.A能使用B的方法和属性.这里强调的是克隆而不是继承.可以出现这种情况:A的prototype是B的实例,同时B的prototype也是A的实例. 现在有一个类A,我想要创建一个类B,我希望这个B类能够继承A类的方法和属性,并且能进行扩展(即添加额外的方法和属性).那么我们称B的原型为A.即为:B.prototype = A javascript的方…
map 方法会给原数组中的每个元素都按顺序调用一次 callback 函数.callback 每次执行后的返回值组合起来形成一个新数组. callback 函数只会在有值的索引上被调用:那些从来没被赋过值或者使用 delete 删除的索引则不会被调用. 在我们日常开发中,操作和转换数组是一件很常见的操作,下面我们来看一个实例: 复制代码代码如下: var desColors = [],    srcColors = [        {r: 255, g: 255, b: 255 }, // W…
摘抄来源:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort sort() 方法对数组的元素做原地的排序,并返回这个数组. sort 排序可能是不稳定的.默认按照字符串的Unicode码位点(code point)排序. 语法 arr.sort([compareFunction]) 参数 compareFunction可选.用来指定按某种顺序进行排列的函数.如果省略…
摘抄于:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/replace replace() 方法使用一个替换值(replacement)替换掉一个匹配模式(pattern)在原字符串中某些或所有的匹配项,并返回替换后的新的字符串.这个替换模式可以是一个字符串或者一个 RegExp,替换值可以是一个字符串或者一个函数. 语法 str.replace(regexp|subs…
Function.prototype.apply()|Function.prototype.call() apply()方法可以在使用一个指定的 this 值和一个参数数组(或类数组对象)的前提下调用某个函数或方法.call()方法类似于apply(),不同之处仅仅是call()接受的参数是参数列表. 简而言之: apply()一个this,多个参数 call()   一个this,一个参数 语法 fun.apply(thisArg[, argsArray])|fun.call(thisArg[…
首先看到 www.w3school.cn上的解释:http://www.w3school.com.cn/jsref/jsref_slice_array.asp 定义和用法 slice() 方法可从已有的数组中返回选定的元素. 语法 arrayObject.slice(start,end) 参数 描述 start 必需.规定从何处开始选取.如果是负数,那么它规定从数组尾部开始算起的位置.也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推. end 可选.规定从何处结束选取.该参数是数…
作为一个致力于前端开发的人员,能够熟练掌握javascript的原理和机制是每个小白的必经之路,这也是最痛苦的.有人说前端功力好不好最主要的就是看对js的掌握能力,有人说十年也啃不完一门javascript.而我们能够知道的是:javascript是每个前端学习的核心技能(想想之后的node.js.vue.js,颤抖吧!!!) 本期主要介绍一下js当中的prototype原型(emmm,不知道你们觉得难不难,反正我当时看了许多博客都一知半解,也许现在也是,所以不足之处,请留言指教..) 先了解一…
prototype实现了对象与对象的继承,在JS中变量,函数,几乎一切都是对象,而对象又有_ptoro_属性,这个属性就是通常说的原型,是用来指向这个对象的prototype对象,prototype对象又有_proto_属性,就是这样依次递归,直到追溯到object对象. function Person(name){ this.name=name; }; Person.prototype.printName=function(){//通过给Person对象下的prototype赋一个printN…
构造函数 我们知道,ECMAScript5中的Object.Array.Date.RegExp.Function等引用类型都是基于构造函数的,他们本身就是ECMAScript5原生的构造函数.比如,我们可以这样申明一个对象: var person = new Object(); 这里的Object类型的构造函数就是一个名为Object的构造函数,然后通过new来实例化这个构造函数,从而获得一个新的实例对象.同理,Array.Date等其他类型也是一样. 我们又知道,原型对象包含了特定类型的所有实…
prototype属性  任何js函数都可以用作构造函数, 而构造函数需要用到prototype属性, 因此, 每个js函数F(除了ES5的Function.bind()方法返回的函数外) 都自动拥有一个prototype属性. F.prototype的值是一个对象 o , o 默认包含唯一一个不可枚举的属性: constructor , 值默认指回 F,可以修改. 调用 F 构造的对象继承 F.prototype 对象. F.prototype 是类的唯一标识.  当且仅当两个对象继承自同一个…
在工作中有时候会看到prototype和__proto__这两个属性,对这两个属性我一直比较蒙圈,但是我通过查阅相关资料,决定做一下总结加深自己的理解,写得不对的地方还请各位大神指出. 跟__proto__属性相关的两个方法 判断属性是存在实例对象中,还是存在原型对象中的方法 获取或遍历对象中属性的几种方法 1.prototype 每个函数都有一个prototype属性,该属性是一个指针,指向一个对象. 而这个对象的用途是包含由特定类型的所有实例共享的属性和方法.使用这个对象的好处就是可以让所有…
虽然在JavaScript里一切皆对象,但为了理解原型链系统,我们需要将JavaScript的对象分为对象和函数两大类.在此基础上,JavaScript的原型链逻辑遵从以下通用规则: 对象有__proto__属性,函数有prototype属性: 对象由函数生成; 生成对象时,对象的__proto__属性指向函数的prototype属性. 在没有手动修改__proto__属性的指向时,以上三条便是JavaScript默认原型链指向逻辑. 1.一般情况: // 创建空对象时,实际上我们是用Objec…
1.prototype是函数的一个属性(每个函数都有一个prototype属性),这个属性是一个指针,指向一个对象.它是显示修改对象的原型的属性. 2.__proto__是一个对象拥有的内置属性(请注意:prototype是函数的内置属性,__proto__是对象的内置属性),是JS内部使用寻找原型链的属性.…
参考 http://abruzzi.iteye.com/blog/1026125 http://www.jb51.net/article/23052.htm…
三者暧昧关系简单整理 在javascript中,prototype.constructor以及__proto__之间有着“著名”的剪不断理还乱的三角关系,楼主就着自己对它们的浅显认识,来粗略地理理以备忘,有不对之处还望斧正. 楼主的一句话理解就是:某个对象的constructor属性返回该对象构造函数,其__proto__属性是个对象,值和其构造函数的prototype属性值一致. 先来说说prototype.prototype的解释是“原型”,js的所有函数都有一个prototype属性,其属…
C# -- 等待异步操作执行完成的方式 C# -- 等待异步操作执行完成的方式 1. 等待异步操作的完成,代码实现: class Program { static void Main(string[] args) { Func<int, int> mySum1 = SumNumbers; Func<int, int> mySum2 = SumNumbers; Func<int, int> mySum3 = SumNumbers; AsyncCallback callba…
最近在看关于拖延症的一本书<拖拉一点也无妨>,后面得出结论是自己写博客大部分处于两种状态,心情很好和心情很不好的时候.因为正常状态下感觉写博客吧,是件很麻烦的事情,不如去看看电影看看漫画啥的.最近在看漫画<进击的巨人>和<一拳超人>,感觉是两种极端,哈哈. 最近在进行某个项目的重写工作,前后端都要重新构架重写,时间给了一个月.项目的现状大概是后端一个类有一万行左右,包含几十个方法.每个方法从一两百行到上千行不等,大部分方法是没有参数和返回值的,全局的操作几百个成员变量.…
构造函数的Prototype上定义的方法确实可以通过对象直接调用,而且代码是共享的.我表示我不懂.太难理解了,艹.在Javascript中,prototype不但能让对象共享自己的财富,而且prototype还有寻根问祖的天性.当从一个对象那里读取属性或调用方法时,如果该对象自身不存在这样的属性或方法,就会去自己关联的prototype对象里寻找.如果prototype没有,又会去prototype自己关联的前辈prototype那里寻找,直到找到或追溯过程结束为止. 我们先从Javascrip…
JavaScript -- 原型:prototype的使用 在 JavaScript 中,prototype 是函数的一个属性,同时也是由构造函数创建的对象的一个属性. 函数的原型为对象. 它主要在函数用作构造函数时使用. 可以使用 prototype 属性向对象添加属性和方法,甚至于已创建的对象也是如此. 1. 举例: <!doctype html> <html> <head> <meta charset="UTF-8"> <ti…