(function() {
// 函数创建一个命名空间
window.foo = function() {
// 对外公开的函数,创建了闭包
};
})(); // 立即执行此匿名函数
function Stu(name, age) {
// 1. 创建对象
var obj = new Object();
// 2. 挂载属性
obj.name = name;
obj.age = age;
// 3. 导出对象
return obj;
}
var ostu = Stu("hvgege", 50);
console.log(ostu.name);
hvgege
function Stu(name) {
this.name = name; // 属性
this.showName = function() {//方法
console.log(this.name);
}
}
// 创建第一个对象
var p1 = new Stu('hvgege');
p1.showName();
// 创建第二个对象
var p2 = new Stu('hvge');
p2.showName();
// 判断两个对象方法的引用地址
console.log(p1.showName == p2.showName);
hvgege
hvge
false
var a = [1, 2, 3];
var b = a;
b.push(4);// 给数组添加值
console.log(a);
(4) [1, 2, 3, 4]
// 构造函数
function Stu(name, age) {
// 添加对象的属性
this.name = name;
this.age = age;
// 添加对象的方法
this.say = function() {
}
}
// new命令新建一个对象
var stu = new Stu("aa", 12);
console.log(stu);
Stu {name: "aa", age: 12, say: ƒ}
// 构造函数
function Animal(name, color) {
this.name = name;
}
// 添加原型对象的属性
Animal.prototype.say = '三毛';
// 新建两个对象
var cat1 = new Animal('大毛');
var cat2 = new Animal('二毛');
// 输出测试结果
console.log(cat1.name, cat2.name, cat1.say, cat2.say);
大毛 二毛 三毛 三毛
// 第一段 构造函数
function 构造函数() {
this.属性
}
// 第二段 原型对象
构造函数.原型.方法 = function() {
// body...
}
// 第三段 实例化对象
var 对象1 = new 构造函数();
// 如何继承属性
function A(name){
this.name = name;
}
// 添加原型对象的属性
A.prototype.say = function(){
console.log(this.name);
};
// 实现继承属性
function B(name, age){
A.call(this, name);
this.age = age;
}
// 输出两对象情况
var oa = new A('hv');
console.log(oa);
var ob = new B('hvge', 18);
console.log(ob);
A {name: "hv"} __proto__:say:ƒ ()
B {name: "hvge", age: 18} __proto__:
// 属性继承加上以下部分
for (var attr in A.prototype){
B.prototype[attr] = A.prototype[attr];
}
B.prototype.speak = function(){};
{name: "hv"} __proto__:say:ƒ ()
{name: "hvge", age: 18} __proto__:say:ƒ ()speak:ƒ ()
// 原型继承
B.prototype.__proto__ = A.prototype;
B.prototype.speak = function(){
console.log(this.name, this.age);
};
// 输出两对象情况
var oa = new A("hvge");
var ob = new B("hvgege", 18);
oa.say();
ob.speak();
ob.say();
hvge
hvgege 18
hvgege
// 命名空间 - 顶级命名空间
// 防止命名空间已经存在
window.KG = window.KG || {};
// 分配个人的命名空间
KG.HGG = {};
// HGG 在自己的命名空间里写组件
KG.HGG.Tab = (function(){
return;
})();