argument对象伪数组
面向对象的思想
<script>
/*
* 编程思想:把一些生活中做事的经验融入到程序中
* 面向过程:凡事都要亲力亲为,每件事的具体过程都要知道,注重的是过程
* 面向对象:根据需求找对象,所有的事都用对象来谈,注重的是结果
*
* 面向对象特性:封装,继承(JS里面没有类的概念),多态(JS也没有这个概念)
* JS不是面向对象的语言,但是可以模拟面向对象的思想
* JS是一门基于对象的语言
*
*对象:有特征和行为,具体特指某一个事物
*
* 创建对象的三种方式:
* 1.调用系统的构造函数创建对象
* var 变量名 = new Object();
*
*
* 2.自定义构造函数
*
*
*
*
*
*
* */
var obj = new Object();
//对象有特征---属性 行为---方法
//添加属性----如何添加属性? 对象.名字=值;
obj.name = "小辉";
obj.age = 38;
obj.sex = "女";
//添加方法--如何添加方法?对象.名字=函数;
obj.eat = function () {
console.log("我喜欢吃油炸榴莲凉拌臭豆腐和大蒜");
};
obj.play = function () {
console.log("我喜欢打小杰");
}
console.log(obj.name);
console.log(obj.sex);
console.log(obj.age);
obj.eat();
obj.play();
</script>
工厂模式常见对象
<script>
/*
* 如何获取该变量(对象)是不是属于什么类型的?
* 语法:
* 变量 instanceof 类型的名字---------->布尔类型,结果为true,false
*
* 在当前的对象的方法中,可以用this关键字代表当前的对象
* */
//人的对象
// var person = new Object();
// person.name = "小张";
// person.age = 18;
// person.sayHi = function () {
// //在当前这个对象的方法中是可以访问当前这个对象的属性值
// console.log("您好,吃了没您,我叫"+person.name);
// }
//如何一次性创建多个对象?吧创建对象的代码封装在一个函数中
//工厂模式创建对象
function creatObject(name,age) {
var obj = new Object();
obj.name = name;//第一个name是属性,第二个name是变量名
obj.age = age;
obj.sayHi=function () {
console.log("阿尼哈谁哟,我叫:"+this.name+"我今年"+this.age);
};
return obj;//必须要返回这个对象
}
//创建人的对象
var per1 = creatObject("小张",18);
per1.sayHi();
//在创建一个人的对象
var per2 = creatObject("小辉",40);
per2.sayHi();
</script>
自定义构造函数
对象占了两块空间,一个是栈一个是堆.堆里面是对象,栈里面是该对象所在空间的地址(引用).
字面量的方式创建对象
<script>
//字面量方式创建对象
var obj={};//空对象
//添加属性
obj.name = "小白";
obj.age = 10;
//添加方法
obj.sayHi=function () {
console.log("我是"+this.name);
};
obj.sayHi();
//优化后的写法
var obj2={
name:"小明",
age:20,
sayHi:function () {
console.log("我是"+this.name);
},
eat:function () {
console.log("吃了");
}
};
obj2.sayHi();
obj2.eat();
</script>