在我们日常开发中,操作和转换数组是一件很常见的操作,下面我们来看一个实例:代码如下: var desColors = [],srcColors = [{r: 255, g: 255, b: 255 }, // White{r: 128, g: 128, b: 128 }, // Gray{r: 0, g: 0, b: 0 } // Black]; for (var i = 0, ilen = srcColors.length; i < ilen; i++) {var color = srcColors[i],format = function(color) {return Math.round(color / 2);};desColors.push( {r: format(color.r),g:...
__proto__是内部原型,prototype是构造器原型(构造器其实就是函数) 构造器的原型(prototype)是一个对象 那什么是构造器呢? 要想创建一个对象,首先要有一个对象构造器,就像php里面一样,要想创建一个对象,首先要有一个类 构造器的实质就是一个函数,下面的问题是:如何通过这个构造器来创建一个对象呢? 答案: new 构造器构造的是对象。 一、所有构造器/函数的__proto__都指向Function.prototype,它是一个空函数(Empty f...
1.使用prototype完成单继承.代码如下: //定义一个A类 function A(){ } //为A类动态调用属性color,与方法sayColor A.prototype.color = "blue"; A.prototype.sayColor = function(){ alert(this.color); }; //创建了一个B类 function B(){ } //让B继承自A B.prototype=new A(); //new出A的对象赋值给B的原型,B中就包含了A中的所有定义的属性与方法. //可不可以将继承的sayColor进行重写. B.prototype.sayColor=function(){ alert("...
此方法并非笔者原创,笔者只是在前辈的基础上,加以总结,得出一种简洁实用的JavaScript继承方法。传统的JavaScript继承基于prototype原型链,并且需要使用大量的new操作,代码不够简洁,可读性也不是很强,貌似还容易受到原型链污染。笔者总结的继承方式,简洁明了,虽然不是最好的方式,但希望能给读者带来启发。好了,废话不多说,直接看代码,注释详尽,一看就懂~~~代码如下:/*** Created by 杨元 on 14-11-11.* 不使用prototy...
JavaScript中的继承是通过原型链(prototype chain)来完成的:每个对象内部都有另外一个对象作为其prototype而存在,对象从这个prototype中继承属性(property)。对于每个对象来说,可以用以下三种方式来访问其原型对象:1.__proto__。可以通过对象的__proto__属性来访问其原型对象。该属性仅在Firefox、Safari和Chrome中得到支持,在IE和Opera中不支持。2.Object.getPrototypeOf()。可以将对象作为参数传入Object.getPrototypeOf()方...
本文实例讲述了javascript面向对象之共享成员属性与方法及prototype关键字用法。分享给大家供大家参考。具体如下: 共享成员属性与方法,使用prototype关键词代码如下: function Dog(){} Dog.prototype.shout=function(){alert("hello,小狗"); } Dog.prototype.name="黄色小狗"; var dog1 = new Dog(); var dog2 = new Dog(); dog1.shout(); dog2.shout(); dog1.name="小白"; window.alert(dog1.name+dog2.name);注意知识点: (1)...
Array没有indexOf方法,这样在一个数组中查找某个元素的索引时比较麻烦,为了调用方便,于是通过prototype原型扩展了Array.prototype.indexOf(),这样用起来就比较方便了。但是这个自定义的indexOf在对数组进行遍历的时候却出现了问题。代码如下: Array.prototype.indexOf = function(item) { for (var i = 0; i < this.length; i++) { if (this[i] == item) return i; } return -1; }用的时候直接代码如下: var arr=[...
本文实例讲述了js使用Array.prototype.sort()对数组对象排序的方法。分享给大家供大家参考。具体分析如下: 在讲对数组对象进行排序时,我们先来简单的了解一下Array.prototype.sort()。sort方法接受一个参数——Function,function会提供两个参数,分别是两个进行比较的元素,如果元素是String类型则通过Unicode code进行比较,如果是Number类型则比较值的大小。如果比较的函数中返回1则两个元素交换位置,0和-1不交换位置。先看一...
具体代码如下:代码如下: //定义函数 function people(name,sex,age){ this.name = name;this.sex = sex;this.age = age; } //共享isStudent与sayName方法 people.prototype = { isStudent:true,sayName:function(){alert(this.name);} } var people1 = new people(韩梅梅,女,16); //实例化对象1 var people2 = new people(李磊,男,17); //实例化对象2 //通过共享的方法让两个对象说出自己的名字 people1.sayName(); people2...
本文实例讲述了JS中prototype的用法。分享给大家供大家参考。具体分析如下: JS中的phototype是JS中比较难理解的一个部分 本文基于下面几个知识点: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展。我们称B的原型为A。 2 javascript的方法可以分为三类: a 类方法 b 对象方法 c 原型方法 例子如下:function People(name) {this.n...
本文实例讲述了JavaScript通过prototype给对象定义属性的用法。分享给大家供大家参考。具体分析如下: 下面的JS代码定义了movie对象。在使用对象的过程中又通过prototype给对象添加了isComedy属性,调用的时候直接使用object.isComedy即可,非常方便。Narnia a comedy "+narnia.isComedy); officeSpace.isComedy = true; //override the default just for this object document.write("Office Space a comedy "+officeSpace.isCome...
为什么要用Object.prototype.toString而不是Function.prototype.toString或者其它?这是和他们的toString解释方式有关系的。下面是ECMA中对Object.prototype.toString的解释:代码如下: Object.prototype.toString( ) When the toString method is called, the following steps are taken: 1. Get the [[Class]] property of this object. 2. Compute a string value by concatenating the three strings “[object “, Result (1)...
本文实例讲述了JavaScript使用Prototype实现面向对象的方法。分享给大家供大家参考。具体分析如下: prototype 是 Function 对象的一个属性,这个属性指向另一个对象。 这个对象的所有属性和方法,都会被构造函数的实例继承。 同时 prototype 又存在一个指向构造函数的引用 constructor,这样就成功的构成一个循环引用的原型链结构。 我们可以把那些不变的属性和方法,直接定义在 prototype 对象上, 节省内存开销。function Cat(n...
本文实例讲述了Javascript中prototype属性实现给内置对象添加新的方法。分享给大家供大家参考。具体实现方法如下:prototype属性使用(给内置对象添加新的方法,方便调用)function getMaxFunc() {var max = this[0];for (var i in this) {if (max 希望本文所述对大家的javascript程序设计有所帮助。
本文实例讲述了JavaScript中String.prototype用法。分享给大家供大家参考。具体如下:// 返回字符的长度,一个中文算2个 String.prototype.ChineseLength=function() { return this.replace(/[^\x00-\xff]/g,"**").length; } // 判断字符串是否以指定的字符串结束 String.prototype.EndsWith = function(str) {return this.substr(this.length - str.length) == str; } // 去掉字符左端的的空白字符 String.prototype.LeftTrim = ...