编程思想: 就是把一些生活中的做事的经验融入到程序中
1.面向过程:凡事都要亲历亲为,每件事的具体过程都要知道,注重的是过程
2.面向对象:根据需求找对象,所有的事都用于对象来做,注重的是结果
3.面向对象的特性:封装、继承、多态(抽象性)
4.JS不是面向对象的语言,但是可以模拟面向对象的思想
5.JS是一门基于对象的语言
在JS中有一句话: 万物皆对象,指的是看得见,摸得着,具体特指的某个东西。例如,从左边数第二个同学,我头发上那个粉色的发夹。
对象的特点: 有属性和方法,具体指的某个事物(特征→属性;行为→方法)
语法:
var 变量名=new Object();Object是系统的构造函数
//实例化对象 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.age); console.log(obj.sex); //方法的调用 obj.eat(); obj.play();
// 人的对象 var person = new Object(); person.name = "小白"; person.age = 10; person.sayHi = function() { //在当前这个对象的方法中是可以访问当前这个对象的属性的值 console.log("您好,吃了没您,我叫:" + this.name); }; //学生的对象 var stu = new Object(); stu.name = "小芳"; stu.age = 18; stu.study = function() { console.log("学习,敲代码,我今年" + this.age + "岁了"); }; //小狗的对象 var dog = new Object(); dog.name = "哮天犬"; dog.say = function() { console.log("汪汪...我是哮天犬"); };
(1)输出人、学生、小狗是不是对象的类型
instanceof:获取对象某变量是否属于某类型
语法:变量 instanceof 对象
结果为布尔类型,true就是这种类型,false不是这种类型
(2)在当前对象的方法中调用当前对象的属性,可以使用this关键字代表当前的对象
(3)如何一次性创建多个对象(工厂模式创建对象)
把创建对象的代码封装在一个函数中
函数和构造函数的区别: 名字是不是大写的(首字母是大写)——初学可以用这种方法区分
(4)自定义构造函数创建对象
(5)自定义构造函数做了几件事(创建对象的时候)
① 在内存中申请一块空闲的空间,存储创建新的对象
② 把this设置为当前对象
③ 设置对象的属性和方法的值
④ 把this对象返回
(6)创建对象的内存图
(1)字面量创建对象的缺陷:一次性的对象
(2)点语法:对象.名字=值;(属性) 对象.名字=函数;(方法)
JS是一门动态类型的语言如何理解:
①代码(变量)只有执行到这个位置的时候,才知道这个变量中到底存储的是什么。如果是对象,就有对象的属性和方法;如果是变量就是变量的作用
②对象没有什么,只要点了,通过点语法,那么就可以为对象添加属性或者方法
(3)中括号的写法