@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<script>
1、命名空间注册工具类
var Namespase = Namespase || {};
Namespase.register = function(path) {
var arr = path.split(".");
var ns = "";
for (var i = 0; i < arr.length; i++) {
if (i > 0) {
ns += ".";
}
ns += arr[i];
eval("if (typeof(" + ns + ") === 'undefined')" + ns + "= new Object();");
}
}
2、注册命名空间 com.cjm.ui
Namespase.register("com.cy.ui");
3、使用命名空间
com.cy.ui.Person = function(name) {
this.SayHi = function() {
console.log("hi:" + name);
}
}
var p = new com.cy.ui.Person("Cy1");
//p.SayHi();
com.cy.ui.Student = function(name, age) {
com.cy.ui.Person.call(this, name);
this.Word = function() {
console.log("age:" + age);
}
}
var stu = new com.cy.ui.Student("Cy", 18);
stu.SayHi();
stu.Word();
/* -- 类式继承 -- */
//先声明一个超类
function Person(name) {
this.name = name;
}
//给这个超类的原型对象上添加方法 getName
Person.prototype.getName = function() {
return this.name;
}
//实例化这个超
var a = new Person('Darren1');
console.log(a.getName()); //Darren1
//再声明类
function Programmer(name, sex) {
//这个类中要调用超类Person的构造函数,并将参数name传给它
Person.call(this, name);
this.sex = sex;
}
//这个子类的原型对象等于超类的实例
Programmer.prototype = new Person();
//因为子类的原型对象等于超类的实例,所以prototype.constructor这个方法也等于超类构造函数,你可以自己测试一下,如果没这一步,console.log(Programmer.prototype.constructor这个是Person超类的引用,所以要从新赋值为自己本身
console.log(Programmer.prototype.constructor);
/*function Person(name) {
this.name = name;
} */
Programmer.prototype.constructor = Programmer;
console.log(Programmer.prototype.constructor);
/*function Programmer(name, sex) {
Person.call(this, name);
this.sex = sex;
}
*/
//子类本身添加了getSex 方法
Programmer.prototype.getSex = function() {
return this.sex;
}
//实例化这个子类
var _m = new Programmer('Darren2', 'male');
//自身的方法
console.log(_m.getSex()); //male
//继承超类的方法
console.log(_m.getName()); //Darren2
/* -- 原型式继承 -- */
//clone()函数用来创建新的类Person对象
var clone = function(obj) {
var _f = function() {};
//这句是原型式继承最核心的地方,函数的原型对象为对象字面量
_f.prototype = obj;
return new _f;
}
//先声明一个对象字面量
var Person = {
name: 'Darren',
getName: function() {
return this.name;
}
}
//不需要定义一个Person的子类,只要执行一次克隆即可
var Programmer = clone(Person);
//可以直接获得Person提供的默认值,也可以添加或者修改属性和方法
//alert(Programmer.getName());
Programmer.name = 'Darren2';
//alert(Programmer.getName());
//声明子类,执行一次克隆即可
var Someone = clone(Programmer);
function fun(name) {
this.name = name;
console.log(name);
}
var obj = new Object();
fun.call(obj,"Cy");
console.log(obj.name);
</script>
</head>
<body>
<div>
</div>
</body>
</html>
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<script>
1、命名空间注册工具类
var Namespase = Namespase || {};
Namespase.register = function(path) {
var arr = path.split(".");
var ns = "";
for (var i = 0; i < arr.length; i++) {
if (i > 0) {
ns += ".";
}
ns += arr[i];
eval("if (typeof(" + ns + ") === 'undefined')" + ns + "= new Object();");
}
}
2、注册命名空间 com.cjm.ui
Namespase.register("com.cy.ui");
3、使用命名空间
com.cy.ui.Person = function(name) {
this.SayHi = function() {
console.log("hi:" + name);
}
}
var p = new com.cy.ui.Person("Cy1");
//p.SayHi();
com.cy.ui.Student = function(name, age) {
com.cy.ui.Person.call(this, name);
this.Word = function() {
console.log("age:" + age);
}
}
var stu = new com.cy.ui.Student("Cy", 18);
stu.SayHi();
stu.Word();
/* -- 类式继承 -- */
//先声明一个超类
function Person(name) {
this.name = name;
}
//给这个超类的原型对象上添加方法 getName
Person.prototype.getName = function() {
return this.name;
}
//实例化这个超
var a = new Person('Darren1');
console.log(a.getName()); //Darren1
//再声明类
function Programmer(name, sex) {
//这个类中要调用超类Person的构造函数,并将参数name传给它
Person.call(this, name);
this.sex = sex;
}
//这个子类的原型对象等于超类的实例
Programmer.prototype = new Person();
//因为子类的原型对象等于超类的实例,所以prototype.constructor这个方法也等于超类构造函数,你可以自己测试一下,如果没这一步,console.log(Programmer.prototype.constructor这个是Person超类的引用,所以要从新赋值为自己本身
console.log(Programmer.prototype.constructor);
/*function Person(name) {
this.name = name;
} */
Programmer.prototype.constructor = Programmer;
console.log(Programmer.prototype.constructor);
/*function Programmer(name, sex) {
Person.call(this, name);
this.sex = sex;
}
*/
//子类本身添加了getSex 方法
Programmer.prototype.getSex = function() {
return this.sex;
}
//实例化这个子类
var _m = new Programmer('Darren2', 'male');
//自身的方法
console.log(_m.getSex()); //male
//继承超类的方法
console.log(_m.getName()); //Darren2
/* -- 原型式继承 -- */
//clone()函数用来创建新的类Person对象
var clone = function(obj) {
var _f = function() {};
//这句是原型式继承最核心的地方,函数的原型对象为对象字面量
_f.prototype = obj;
return new _f;
}
//先声明一个对象字面量
var Person = {
name: 'Darren',
getName: function() {
return this.name;
}
}
//不需要定义一个Person的子类,只要执行一次克隆即可
var Programmer = clone(Person);
//可以直接获得Person提供的默认值,也可以添加或者修改属性和方法
//alert(Programmer.getName());
Programmer.name = 'Darren2';
//alert(Programmer.getName());
//声明子类,执行一次克隆即可
var Someone = clone(Programmer);
function fun(name) {
this.name = name;
console.log(name);
}
var obj = new Object();
fun.call(obj,"Cy");
console.log(obj.name);
</script>
</head>
<body>
<div>
</div>
</body>
</html>