JavaScript学习记录五

编程思想:把一些生活中做事的经验融入到程序中
    * 面向过程:凡事都要亲力亲为,每件事的具体过程都要知道,注重的是过程
    * 面向对象:根据需求找对象,所有的事都用对象来做,注重的是结果
    *
    * 面向对象特性:封装,继承,多态 (抽象性)
    * 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

猜你喜欢

转载自blog.csdn.net/qq_34117624/article/details/82713711
今日推荐