首页 > WEB开发 > JS扩展知识:模拟类、原型、JSON
2014
08-06

JS扩展知识:模拟类、原型、JSON

模拟类

1、定义模拟类(包括公有 / 私有属性,公有 / 私有方法)

注:私有成员用var声明,公有的用this声明。公有方法和私有方法可以同名,然后在公有方法中调用私有方法。

直接看下面代码即可:

function Person(){
	this.name = "WJY"; //模拟公有属性
	var age = 24; //模拟私有属性

	this.eat = function(){ //模拟公有方法
		alert("吃饭");
	};
	var sleep = function(){ //模拟私有方法
		alert("睡觉");
	};
}

var p = new Person();
alert(p.name); //可以访问
//alert(p.age); //访问不到
p.eat();
//p.sleep();

2、模拟静态属性和方法(接上例)

Person.gender = "male";
Person.study = function(){
	alert("学习JAVA中。");
};
alert(Person.gender);
Person.study();

3、模拟有参构造方法:

function Person(name,age){
	this.name = name;
	this.age = age;
}
var p = new Person("WJY",24);
alert(p.name);
alert(p.age);

原型(prototype)

4、利用原型(prototype)扩展属性和方法

原型(prototype)的作用:对于一个已知类,获取到该类的原型,就可以扩展它的功能。

下面的例子演示了为JS中的String类扩展一个trim()方法:

//String:JS核心类(已知)
//String.prototype:String类的原型
//String.prototype.trim=function(){}:在它的原型上添加了一个trim()方法。
String.prototype.trim=function(){
	return this.replace(/(^\s*)|(\s*$)/g,"");
};
var str = "  abc   ";
alert("-"+str.trim()+"-");

5、利用prototype模拟继承

function Person(){
	this.name = "WJY";
	this.age = 24;
}
function Student(){
	this.gender = "male";
}

var p = new Person();
//模拟继承,需记住!☆
Student.prototype = p;
var stu = new Student();
alert(stu.name); //调用父类属性
alert(stu.age);

JSON

6、JSON:JS对象表示法(JavaScript Object Notation)

1)JSON是存储和交换文本信息的语法,类似于XML,但比XML更小、更快、更易解析。

2)虽然JSON使用JS语法来描述数据对象,但JSON仍然独立于语言和平台,支持多语言编程。

3)JSON语法(直接看下面例子):

① JSON数据的语法格式为:名称-值对,如name:”WJY”,它等价于JS语句:name = “WJY”。

② JSON对象在花括号中书写,一个JSON对象可以包含多个名称-值对。

var p = {name:"WJY",age:24,gender:"male"};
alert(p.name);
alert(p.age);
alert(p.gender);

4)JS程序能够使用eval()函数,从JSON字符串来生成原生的JavaScript对象。


留下一个回复

你的email不会被公开。