/* 1.使用字面量创建对象【常用】 */ var a = {}; // js中的空对象、 var student = { // 使用 : 来分隔key 和 value name : 'mujiaoniao', // 键值对之间使用 , 分割. 最后一个属性后面的 , 可有可无 age: 50 }; function someMathod(){ console.log(" go to bed ") } var person = { name : "mujiaoniaoniao", age: 8 doing: someMathod, // 调用方法 把已经定义的函数作为 doing key 的 value say: function (target){ // 将匿名函数作为 say key 的 value console.log('hello '+ target); } } // JS 中的对象 像map一样开放的,可以随时随地的动态添加 key value student.teacher = 'wanglaowu'; student['master'] = 'zhaosi'; // 以上两种的方法都可以 在student 方法中添加属性; student['say'] = person.say; student.say('hello world') //此时将 person中 say方法 赋予给 student 对象中 并且起名为 ‘say' //1.使用 。 成员访问运算符来访问 属性 。 可以理解为 “的” console.log(student.name); //2 使用 [] 来访问属性 此时的属性需要加上引号 console.log(student['name']); // 3.调用方法 不能忘记加上 () student.say(); function createStudent(name,age){ var s = { name: name ; age : age ; }; s.sayHello = function(target){ console.log("你好,"+ target); } return s; } var o1 = createStudent ('张三',12); var o2 = createStudent('李四', 15); // 向 createStudent 函数中 传参; //使用new Object 创建对象 var student = new Object(); student.name = 'mujiaoniao'; student.height = 144 ; student.weight = 123 ; student.say = function (){ console.log('hello'); } // 这样创建的对象可以随时随地的 添加属性 和方法 console.log(student.name); console.log(student['weight']); student.say(); // 3.使用 构造函数 创建对象 // 以上两种方式进行创建对象的方式 只能创建一个对象 而构造函数可以创建多个对象; // 基本语法 /* function 构造函数名(形参){ this.属性 = 值 ; this.方法 = function ; } var object = new 构造函数名(实参); tips: 1.构造函数的函数名首字母大写 2.创建对象传递向形参传递实参时 必须使用new关键字 其中 this 相当于 ”我“ */ function Cat (name,type,sound) { this.name = name ; this.type = type ; this.miao = function(){ console.log(sound); } // 不需要return : 整个函数是构造函数 所以没有返回值 } var mi = new Cat('mimi','田园毛','miaomiao'); var heihei = new Cat('heihei','波斯猫','bobo'); console.log(mi); mi.miao(); // js当中没有类的概念 可以将Student 这个函数暂时当成 类 + 构造方法来使用; // 与Java不同 没有访问权限的设置 可以认为全是 public //在 ES6 中也引入了 class 关键字, 就能按照类似于 Java 的方式创建类和对象了 class Cat { // constructor : 构造方法,无论 class 叫什么名字 constructor (name , type ) { this.name = name ; this.type = type ; } // 这里可以不写 function function miao(target){ console.log(sound); } } var cat1 = new Cat('mimi','波斯猫','mioamiao'); console.log(cat1); cat1.miao(); function f(o) { // 根本不管 o 是什么类型,只要求,o 这个对象有 key 是 say 的 value // 并且 value 的值是 function 就可以 o.say(); // 习惯上,称这种方式叫做鸭子类型(duck type) } //f({ // say: function () { console.log('我是临时构造的对象')} //}); function Student() { this.say = function() { console.log('我是学生'); } } var o = new Student(); f(o);
JS 当中几种对象的创建【笔记】
最新推荐文章于 2024-08-14 15:45:18 发布