javascript的函数调用继承实现
看到一篇入门的JS继承文章,转载下
原地址:http://sdcyst.javaeye.com/blog/288813
类变量/类方法/实例变量/实例方法
先补充一下以前写过的方法:
在javascript中,所有的方法都有一个call方法和apply方法.这两个方法可以模拟对象调用方法.它的第一个参数是对象,后面的
参数表示对象调用这个方法时的参数(ECMAScript specifies two methods that are defined for all functions, call()
and apply(). These methods allow you to invoke a function as if it were a method of some other object. The first
argument to both call() and apply() is the object on which the function is to be invoked; this argument becomes
the value of the this keyword within the body of the function. Any remaining arguments to call() are the values
that are passed to the function that is invoked).比如我们定义了一个方法f(),然后调用下面的语句:
f.call(o, 1, 2);
作用就相当于
o.m = f;
o.m(1,2);
delete o.m;
举个例子:
Js代码 < type="application/x-shockwave-flash" width="14" height="15" src="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" src="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=function%20Person(name%2Cage)%20%7B%20%20%2F%2F%E5%AE%9A%E4%B9%89%E6%96%B9%E6%B3%95%0A%20%20%20%20this.name%20%3D%20name%3B%0A%20%20%20%20this.age%20%3D%20age%3B%0A%7D%0Avar%20o%20%3D%20new%20Object()%3B%20%20%20%2F%2F%E7%A9%BA%E5%AF%B9%E8%B1%A1%0Aalert(o.name%20%2B%20%22_%22%20%2B%20o.age)%3B%20%2F%2Fundefined_undefined%0A%0APerson.call(o%2C%22sdcyst%22%2C18)%3B%20%2F%2F%E7%9B%B8%E5%BD%93%E4%BA%8E%E8%B0%83%E7%94%A8%3Ao.Person(%22sdcyst%22%2C18)%0Aalert(o.name%20%2B%20%22_%22%20%2B%20o.age)%3B%20%2F%2Fsdcyst_18%0A%0APerson.apply(o%2C%5B%22name%22%2C89%5D)%3B%2F%2Fapply%E6%96%B9%E6%B3%95%E4%BD%9C%E7%94%A8%E5%90%8Ccall%2C%E4%B8%8D%E5%90%8C%E4%B9%8B%E5%A4%84%E5%9C%A8%E4%BA%8E%E4%BC%A0%E9%80%92%E5%8F%82%E6%95%B0%E7%9A%84%E5%BD%A2%E5%BC%8F%E6%98%AF%E7%94%A8%E6%95%B0%E7%BB%84%E6%9D%A5%E4%BC%A0%E9%80%92%0Aalert(o.name%20%2B%20%22_%22%20%2B%20o.age)%3B%20%2F%2Fname_89" qua
相关文档:
JavaScript中的JSON
JavaScript是为网景浏览器做页面脚本语言而实现的一种编程语言。它现在还被很多人误解是java的子集。它是一种具有类C语法和弱对象的模式语言。JavaScript完全遵守ECMAScript语言说明书第三版。
JSON是JavaScript对象文字记号的子集。由于JSON是JavaSript的子集,所以在JavaScript里, ......
2、原型方式
/**
* Person类:定义一个人,有个属性name,和一个getName方法
*/
function Person(){}
Person.prototype.name = "jack";
Person.prototype.getName = function() { return this.name;}
把类的属性(字段),方法都挂在prototype上。
造几个对象测试下:
var p1 = new Person();
var ......
取前面两种的优点:
a、用构造函数来定义类属性(字段)
b、用原型方式来定义类的方法。
就有了第三种方式。这种方式貌似采用的人较多。
3、综合构造函数/原型
/**
* Person类:定义一个人,有个属性name,和一个getName方法
* @param {String} name
*/
function Person(name) {
this.name = name;
}
Pers ......
发送中文字符请求时,如果使用get方式,运行正常;而使用post方法则会出现乱码。这是由于异步对象XMLHttpRequest在处理返回的
responseText的时候,是按UTF-8编码进行解码的。如果你原来的网页编码是gb2312的话,当然会发生编码的冲突了;如果你原来的网页编
码是utf-8,那么就不会出现中文乱码的问题了。
出现了中文乱 ......