this属性表示当前对象,如果在全局作用范围内使用this,则指代当前页面对象window; 如果在函数中使用this,则this指代什么是根据运行时此函数在什么对象上被调用。 我们还可以使用apply和call两个全局方法来改变函数中this的具体指向。 先看一个在全局作用范围内使用this的例子: 代码如下:<script type="text/javascript"> console.log(this === window); // true console.log(window.alert === this.alert); // true console.l...
prototype 属性的作用: 利用prototype 属性提供对象的类的一组基本功能。对象的新实例“继承”赋予该对象原型的操作。 prototype 属性的功能: 所有JavaScript 内部对象都有只读的prototype 属性。可以为内部对象的原型添加功能,但该对象不能被赋予不同的原型。 然而,用户定义的对象可以被赋给新的原型。 constructor 属性的作用: constructor 表示创建对象的函数。 constructor 属性的功能: constructor 属性是所有具有 prot...
代码如下://首先创建父类 function Person(name, age, address) { this.name = name; this.age = age; this.address = address; } //创建子类 function Student(score) { this.score = score; //可以用call方法或者是apply方法调用函数的构造函数 //调用父类的构造函数,通过call方法调用Person类的构造函数。这样就会在student中初始化Person对象,student也就有了Person的属性的副本 Person.call(this,"zhangsan",22,"中国北京!...
代码如下:<script type="text/javascript"> //创建基类 function Person(name, age) { this.name = name; this.age = age; } //通过原型方式给基类添加函数(这样可以服用此函数) Person.prototype.showName = function () { alert(this.name); } //创建子类 function Student(name, age, score) { this.score = score; Person.call(this,name,age); } //把父类的实例赋值给子类的原型 Student.prototype = new Person(); //通过原...
base.js --继承的实现========================== 【注】:继承后,如果父类是一个类,则会继承其属性,方法(包括用prototype声明的),静态方法,否则只有属性和方法。 代码如下:Object.prototype.extendf= function (a,b){ if(!a||!b) return; var fa = typeof a=="function"; var fb = typeof b=="function"; var cha = function(a,b){ for(var c in b){ if(a[c]==undefined)//子类重写 a[c]=b[c]; } return a;//返回继承后的...
代码如下://使用原型继承,中间使用临时对象作为Child的原型属性,临时对象的原型属性再指向父类的原型, //防止所有子类和父类原型属性都指向通一个对象. //这样当修改子类的原型属性,就不会影响其他子类和父类 function extend(Child, Parent) { var F = function(){}; F.prototype = Parent.prototype; Child.prototype = new F(); Child.prototype.constructor = Child; Child.base = Parent.prototype; } function Parent(na...
如: 代码如下:<!— Js插件 --> <script type="text/javascript" src="/scripts/popup.js"></script> <script type="text/javascript" src="/scripts/popup-util.js"></script> <!—Jquery插件 --> <script type="text/javascript" src="/scripts/jquery-1.3.2.js"></script> <script type="text/javascript" src="/scripts/jquery.autocomplete/ jquery.autocomplete.js"> </script> <link type="text/css" rel="stylesheet" hre...
一. 原型与构造函数 Js所有的函数都有一个prototype属性,这个属性引用了一个对象,即原型对象,也简称原型。这个函数包括构造函数和普通函数,我们讲的更多是构造函数的原型,但是也不能否定普通函数也有原型。譬如普通函数: 代码如下:function F(){ alert(F.prototype instanceof Object) //true; } 构造函数,也即构造对象。首先了解下通过构造函数实例化对象的过程。 代码如下:function A(x){ this.x=x; }...
function A(x) { this.x = x; } alert(A.prototype); alert(A.prototype.constructor);根据弹出的结果,我们可以得到:原型对象是由函数的构造函数创建,它所拥有的属性能被所有对象共享,初始时原型对象指向一个Object对象,并且定义了一个constructor属性,该属性指向定义该原型对象的构造函数本身,再看如下代码。 Code function A(x) { A.prototype.x = x; } var obj = new A(10); alert(obj.x); alert(obj.constru...
1.对象冒充 原理:构造函数使用this关键字给所有属性和方法赋值(即采用类声明的构造函数方式)。 因为构造函数只是一个函数,所以可使ClassA的构造函数成为ClassB的方法,然后调用它。ClassB就会收到ClassA的构造函数中定义的属性和方法。 例如: 下面方式定义的ClassA和ClassB: 代码如下:function ClassA(sColor){ this.color=sColor; this.sayColor=function(){ alert(this.color); }; } function ClassB(sColor){ } 关键字t...
先看下前几天的动画是如何构造JS的: 代码如下:var photo=function(){ var index=0,a,b,c,d; return { show:function(){}, auto:function(){} } } var aa=photo(); //基本上是 用return 返回了一些方法。 // 1:无法初始化就执行 auto。 // 2:在初始化的时候,我没办法把this指向aa。 //上面两个问题,会很不方便。 1:我不愿意让自己去这洋写: 代码如下:var aa=photo("id"); aa.auto()//多一句话,很不好看。 理想状态是我在...
代码如下:var JsObject = {} || new Object(); JsObject.extend = function(subClass, superClass){ //先判断子类subClass是否已经定义,如果未定义,则重新定义类。 if(typeof subClass == "undefined")subClass = function(){}; //如果父类superClass是类,则转化成对象 if(typeof superClass == "function")superClass = new superClass(); //遍历父类superClass对象中的属性和方法 for(var p in sup...
javascript中,对象没有原型,而构造器有原型 原型的含义:如果构造器有一个原型对象 A,则由该构造器创建的实例都必然复制自A 代码如下:/*申明2个构造器*/ var flower=function(){ this.name="nokia"; } var flower2=function(){ this.age=22; } /*原型链*/ flower2.prototype=new flower(); /*根据刚才原型的定义,实例obj必然复制自new flower();*/ obj=new flowe2(); /*从父类继承的属性*/ alert(obj.name); //==>"nokia" alert(ob...
constructor属性始终指向创建当前对象的构造函数。比如下面例子:比如下面例子: 代码如下:// 等价于 var foo = new Array(1, 56, 34, 12); var arr = [1, 56, 34, 12]; console.log(arr.constructor === Array); // true // 等价于 var foo = new Function(); var Foo = function() { }; console.log(Foo.constructor === Function); // true // 由构造函数实例化一个obj对象 var obj = new Foo(); console.log(obj.constructor ...
好,那就让我们一步步打造,首先让我们来看下继承原本的写法: 代码如下:<script> var Person = function(name, age) { this.name = name; this.age = age; } Person.prototype.SayHello = function () { alert(this.name + "," + this.age); }; var Programmer = function (name, age, salary) { Person.call(this, name, age); this.salary = salary; }; Programmer.prototype = new Person(); var pro = new Programmer("kym",...