首页 > temp > JavaScript教程 >
-
JavaScript 05 对象 ,this,工厂方法,自定义构造函数,new的执行过程,遍历对象
一个月没有更新了,一直在弄毕业论文和毕设,刚刚告一段落……
对象:对象是一个具体的事物,不是一类。不同属性中间用 逗号 隔开
对象是无序属性的集合,属性的值可以是基本值,对象和函数。
对象由特征(描述对象的,属性,名词)和行为(动词)组成
var student = {
name : "张飞";
age : 12;
sayHi : function () {
console.log("hello");
}
};
在对象方法中如何使用对象属性的值?>>>>this,表示当前对象
var dog = {
name: "puppy",
type: "中华田园犬",
age: 12,
color: "yellow",
bark: function () {
console.log(this.name + "wangwangwang");
},
eat: function () {
console.log("啃骨头");
}
};
dog.bark(); //调用对象的方法
console.log(dog.name); //调用对象的属性
另一种方式访问对象中的元素:
console.log(dog["name"]); //[ ] 内填写键名
函数和方法的区别:
函数可以随时调用,方法是属于对象的函数,调用必须通过 对象.方法名() 来调用
对象创建方法:1 字面量
var = hero{
name:'黄忠',
weapon: '弓箭';
equipment:['头盔', '靴子', '盔甲'],
blood:100,
attack: function () {
console.log(this.name + '射箭');
},
run: function () {
console.log(this.name + ': 加速跑');
},
};
2 new Object()创建对象
Object是构造函数,通过new的方式来调用构造函数 //函数第一个字母大写是构造函数。构造函数只能通过new来调用,在内存中创建一个对象
var hero = new Object(); //创建一个空的对象
JavaScript可以动态增加属性
hero.name = '黄忠';
hero.age = 12;
hero.weapon = '弓箭';
hero.equipment = ['头盔', '靴子', '盔甲'];
hero.blood = 100;
//增加方法
hero.attack = function () {console.log(this.name + '射箭');};
3工厂方法创建对象:
function createHero (name, weapon, equipment, blood) {
var hero = new Object();
hero.name = name;
hero.weapon = weapon;
hero.equipment = equipment;
hero.blood = blood;
hero.attack = function () { console.log(this.name + '攻击' ); };
};
var hero1 = createHero('黄忠',‘弓箭’,[‘头盔’,'靴子'], 100);
var hero2 = createHero('刘备',‘剑’,[‘头盔’,'靴子'], 90);
4 自定义构造函数,第一个字母大写(帕斯卡命名法)
function Hero(name, weapon, equipment, blood){
this.name = name; //this指的是当前对象,也就是实例化之后的对象
this.weapon = weapon;
this.equipment = equipment;
this.blood = blood;
this.attack = function (){console.log(this.name + ':攻击')};
};
var hero1 = new Hero('黄忠', '弓箭', ['头盔', '靴子'], 100);
new的执行过程
function Student(name,age,sex,score) {
this.name = name;
this.age = age;
this.sex = sex;
this.score = score;
this.sayHi = function () {console.log(this.name +" hello");}
};
student = new Student('lilei', 12,'nv',60);
new的执行过程:
1 在内存中创建一个空的对象
2 让构造函数中的this指向刚刚创建的对象
3 执行构造函数,在构造函数中设置属性和方法(也可其他)
4 返回当前对象
this出现的地方:
1 函数中 function fn(){console.log(this)}; //this指向window
2 方法中 //指向这个方法所属的对象
3 构造函数中 //指向构造函数创建的对象
遍历对象的属性
for in 可以遍历对象的成员
var student = {name:'lili', age: 12, sex: 'nv', attack: function(){console.log(1111);}};
for (var key in student) { console.log(key + '-----'+student[key]); }; //遍历出所有的属性,包括函数名 和其内容
删除对象属性: delete student.name; console.log(student.name); //输出undefined 。方法也这样删除
来源:https://www.cnblogs.com/xiaoyuheng/p/14818367.html