此方法并非笔者原创,笔者只是在前辈的基础上,加以总结,得出一种简洁实用的JavaScript继承方法。 传统的JavaScript继承基于prototype原型链,并且需要使用大量的new操作,代码不够简洁,可读性也不是很强,貌似还容易受到原型链污染。 笔者总结的继承方式,简洁明了,虽然不是最好的方式,但希望能给读者带来启发。 好了,废话不多说,直接看代码,注释详尽,一看就懂~~~代码如下: /** * Created by 杨元 o...
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("...
__proto__是内部原型,prototype是构造器原型(构造器其实就是函数) 构造器的原型(prototype)是一个对象 那什么是构造器呢? 要想创建一个对象,首先要有一个对象构造器,就像php里面一样,要想创建一个对象,首先要有一个类 构造器的实质就是一个函数,下面的问题是:如何通过这个构造器来创建一个对象呢? 答案: new 构造器构造的是对象。 一、所有构造器/函数的__proto__都指向Function.prototype,它是一个空函数(Empty f...
在我们日常开发中,操作和转换数组是一件很常见的操作,下面我们来看一个实例:代码如下: 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) { retur...
代码如下:<script type="text/javascript"> function fn(name){ if(typeof name === "string"){ var args = Array.prototype.slice.call( arguments, 1 ); for(var i=0;i<args.length;i++){ alert(args[i]);//结果: 111 222 } } } function callFn(){ fn("test",111,222); } callFn(); </script>
一直在使用js编写自以为是面向对象的方法,遇到一个问题,就是定义一个方法,如下: 代码如下:function ListCommon2(first,second,third) { this.First=function () { alert("first do"+first); } } ListCommon2.do1=function(first) { // this.First(); alert("first do"+first); } ListCommon2.prototype.do2=function(first) { // this.First(); alert("first do"+first); } 两种方法到底有什么区别呢?用不用prototype有什么...
函数:原型 每一个构造函数都有一个属性叫做原型(prototype,下面都不再翻译,使用其原文)。这个属性非常有用:为一个特定类声明通用的变量或者函数。 prototype的定义 你不需要显式地声明一个prototype属性,因为在每一个构造函数中都有它的存在。你可以看看下面的例子: Example PT1代码如下:function Test(){}alert(Test.prototype); // 输出 "Object" 给prototype添加属性 就如你在上面所看到的,prototype是一个对象,因此,你...
Javascript中的每个对象(object)都会有 prototype 。试一下: 代码如下:var Richard = new Object(); alert(typeof(Richard.prototype)); 结果令人郁闷,浏览器弹出来的是 undefined…… 到底是怎么回事呢? 再看一个例子: 代码如下:function Richard(){} alert(typeof(Richard.prototype)); 上面的例子似乎说明,只有 function 对象才有 prototype, 而一般的 Object 对象是没有 prototype 的,事实怎样呢? 我们再来执行一句...
以前,你可能会直接设置self=this或者that=this等等,这样做当然也能起作用,但是使用Function.prototype.bind()会更好,看上去也更专业。下面举个简单的例子:代码如下:var myObj = { specialFunction: function () { }, anotherSpecialFunction: function () { }, getAsyncData: function (cb) { cb(); }, render: function () { var that = this; this.getAsyncData(function () { ...
一,js中对象继承 js中有三种继承方式 1.js原型(prototype)实现继承 代码如下:<SPAN style="BACKGROUND-COLOR: #ffffff"><SPAN style="FONT-SIZE: 18px"><html> <body> <script type="text/javascript"> function Person(name,age){ this.name=name; this.age=age; } Person.prototype.sayHello=function(){ alert("使用原型得到Name:"+this.name); } var per=new Perso...
代码如下:function chk(){ var flag=true; var msg=; var tips={username:姓名,tel:电话,company:公司名称,loupan_name:楼盘名,sdate:团购时间,content_1:团购内容}; $$(.required).each(function(el){ if($F(el).blank()){ msg+=请输入+tips[$(el).readAttribute(id)]+!\n\n; flag=false; throw $break; } } return flag...
代码如下://String.prototype使用 //批量替换,比如:str.ReplaceAll([/a/g,/b/g,/c/g],["aaa","bbb","ccc"]) String.prototype.ReplaceAll=function (A,B) { var C=this; for(var i=0;i<A.length;i++) { C=C.replace(A[i],B[i]); }; return C; }; // 去掉字符两端的空白字符 String.prototype.Trim=function () { return this.replace(/(^[/t/n/r]*)|([/t/n/r]*$)/g,''); };...
以前做界面是用jquery的,现在因为要用许多ajax效果,改用了rails自带的prototype 因为jquery用多了,换个框架也大同小异,不过细节上有很多不同。。。 1.dom加载方面: jquery有dom ready方法,推迟js函数的绑定知道dom树完成(如果没有这个功能,一些element的事件函数之类的绑定可能会出错): $(document).ready(function(){}); 但是prototype是没有的。。。得自己找非官方的扩展,不方便,这个基本的功能,这么重要的功能,...
经常的,可以看到Array.prototype.slice(arguments, 0); 这个写法可以用于function() {} 内,这样可以将函数的参数列表转换成一个真正的数组。请看一个例子: 代码如下:var slice = Array.prototype.slice;var toString = Object.prototype.toString;(function() { var args = arguments; console.log(args, toString.call(args)); // [1, 2, 3] "[object Arguments]" var argsArr = slice(args, 0); console.log(argsArr, to...
prototype 是在 IE 4 及其以后版本引入的一个针对于某一类的对象的方法,而且特殊的地方便在于:它是一个给类的对象添加方法的方法!这一点可能听起来会有点乱,别急,下面我便通过实例对这一特殊的方法作已下讲解: 首先,我们要先了解一下类的概念,JavaScript 本身是一种面向对象的语言,它所涉及的元素根据其属性的不同都依附于某一个特定的类。我们所常见的类包括:数组变量(Array)、逻辑变量(Boolean)、日期变量(Date)、结构...