编程思想:把一些生活中做事的经验融入到程序中
* 面向过程:凡事都要亲力亲为,每件事的具体过程都要知道,注重的是过程
* 面向对象:根据需求找对象,所有的事都用对象来做,注重的是结果
*
* 面向对象特性:封装,继承,多态 (抽象性)
* js不是面向对象的语言,但是可以模拟面向对象的思想
* js是一门基于对象的语言:
* 万物皆对象:---------->程序猿 程旭媛
*
* 什么是对象?
* 看的见,摸得到,具体特指的某个东西
*
* 分析对象有什么特点:特征和行为
*
* 对象:有特征和行为,具体特指的某一个事物
*
* 对象:有属性和方法,具体特指的某个事物
创建对象三种方式:
* 1.调用系统的构造函数创建对象
* var 变量名= new Object(); Object 是系统的构造函数 Array
var obj = new Object();
//对象有特征---属性和行为---方法
//添加属性-----如何添加属性? 对象.名字=值;
obj.name = "小苏";
obj.age = 38;
obj.sex = "女";
//添加方法----如何添加方法? 对象.名字=函数;
obj.eat = function () {
console.log("我喜欢吃油炸榴莲凉拌臭豆腐和大蒜");
};
* 如何获取该变量(对象)是不是属于什么类型的?
* 语法:
* 变量 instanceof 类型的名字----->布尔类型,true就是这种类型,false不是这种类型
* 在当前的对象的方法中,可以使用this关键字代表当前的对象
//工厂模式创建对象
function createObject(name,age) {
var obj = new Object();//创建对象
//添加属性
obj.name = name;
obj.age = age;
//添加方法
obj.sayHi = function () {
console.log("阿涅哈斯诶呦,我叫:" + this.name + "我今年:" + this.age);
};
return obj;
}
//创建人的对象
var per1 = createObject("小芳",20);
* 2.自定义构造函数创建对象(结合第一种和需求通过工厂模式创建对象)
function Person(name,age) {
this.name=name;
this.age=age;
this.sayHi=function () {
console.log("我叫:"+this.name+",年龄是:"+this.age);
};
}
//自定义构造函数创建对象:先自定义一个构造函数,创建对象
var obj=new Person("小明",10);
//自定义狗的构造函数,创建对象
function Dog(name,age,sex) {
this.name=name;
this.age=age;
this.sex=sex;
}
var dog=new Dog("大黄",20,"男");
console.log(dog instanceof Person);//false
* 1). 在内存中开辟(申请一块空闲的空间)空间,存储创建的新的对象
* 2). 把this设置为当前的对象
* 3). 设置对象的属性和方法的值
* 4). 把this这个对象返回
* 3.字面量的方式创建对象
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("吃了");
}
};
设置和获取属性的另一种写法
function Person(name,age) {
this.name=name;
this.age=age;
this.play=function () {
console.log("喜欢玩游戏");
};
}
var obj=new Person("卡卡西",20);
//obj.name="佐助";
obj["name"]="佐助";
console.log(obj["name"]);
obj.play();
obj["play"]();
对象:有属性和方法,特指的某个事物
对象:一组无序属性的集合的键值对,属性的值,可以是任意的类型
JSON格式的数据:一般都是成对的,是键值对.
一般json格式的数据无论是键还是值都是用双引号括起来的
var json = {
"name": "小明",
"age": "10",
"sex": "男"
};
for (var key in json) {
console.log(key + "===========" + json[key]);
}
简单类型和复杂类型
//原始数据类型: number,string,boolean,undefined, null,object
//基本类型(简单类型),值类型: number,string,boolean
//复杂类型(引用类型):object
//空类型:undefined,null
//值类型的值在哪一块空间中存储? 栈中存储
//引用类型的值在哪一块空间中存储?对象在堆上存储,地址在栈上存储
//var num=10;//值类型,值在栈上
//var obj={};//复杂类型,对象在堆,地址(引用)在栈
//值类型之间传递,传递的是值
//引用类型之间传递,传递的是地址(引用)
//值类型作为函数的参数,传递的是值
//引用类型作为函数的参数,传递的是地址
内置对象
* js学习中三种对象:
* 1.内置对象----js系统自带的对象
* 2.自定义对象---自己定义的构造函数创建的对象
* 3.浏览器对象---BOM的时候讲
*
* 内置对象:
* Math
* Date
* String
* Array
* Object
//如何验证变量是不是对象
// var obj={};
// console.log(obj instanceof Object);
Math内置对象
//MDN----在线的帮助文档
//实例对象:通过构造函数创建出来,实例化的对象
//静态对象:不需要创建,直接就是一个对象,方法(静态方法)直接通过这个对象名字调用,
//实例方法必须通过实例对象调用
//静态方法必须通过大写的对象调用
//Math.PI----π---
//Math.E----常数的底数
//Math.abs(值)-----绝对值
//Math.ceil(值)----向上取整
//Math.floor(值)---向下取整
注意:
// console.log(Math.abs(null));//---------0 重点
// console.log(Math.abs("string"));//NaN