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     。方法也这样删除

posted @ 2021-05-27 16:14  筱宇衡  阅读(141)  评论(0编辑  收藏  举报