zoukankan      html  css  js  c++  java
  • JavaScript基于对象(面向对象)<一>类和对象

    javascript中一切皆对象,比如:Array,Date.....这些都是对象。javascript中没有class的定义,function既是定义函数,也可以是定义类。function Obj(){}可以是定义了一个Obj函数,也可以是定义了一个Obj类。 既function obj(){}为最简单的创建类。

    一下案例演示的截图来自Nodejs的命令行,不懂Nodejs不影响阅读

    JS中构建类的最基本方法:

    /*最基本类的定义*/
    function person(){
        this.age;      //定义类属性
    };    
    var p_1 = new person(); //根据已定义类创建对象
    p_1.name = "Tom";       //对象动态赋值属性
    p_1.age = 18;           //属性赋值
    /*输出对象属性值*/
    console.log("His name is " + p_1.name + " " + p_1.age + " years old this year.");
    View Code

    *****************************************************************************************************************

    工厂创建对象:

    抽取一类对象共有的属性,方法封装成一个工厂方法(函数)。

    工厂就好比一个模具,通过工厂这个模具创建多个对象。

    /*创建工厂*/
    function createPet(name,color){
        var pet = new Object();         //创建对象
        pet._name = name;               //创建对象属性
        pet._color = color;
        /*创建对象方法*/
        pet.sayHi = function(){
            console.log("一只" + pet._color + pet._name + "向你问好!");
        }
        return pet;                     //返回一个对象
    }
    var cat = createPet("猫咪","白色");     //用工厂创建对象
    cat.sayHi();                            //调用对象方法
    var dog = createPet("小狗","黑色");     
    dog.hobby = "吃骨头";                   //创建该对象特有属性
    dog.sayHi();        
    console.log(dog.hobby);
    View Code

    工厂创建对象缺点:

    每次创建一个新对象,都需要调用一次工厂方法,有些浪费内存。

    *****************************************************************************************************************

    原型与原型链:

    prototype原型对象(原型类)。原型对象(原型类)prototype可以理解为一个抽象类,是由prototype原型对象(原型类)创建的所有对象的抽象类。

    function person(){ this.name = "stu_name"; }    //创建person类
    person.prototype.profession = "student";        //创建person类原型属性,并赋值
    var tea = new person();                         //创建对象
    tea.name = "teach";                             //重新赋值name属性
    tea.profession = "teacher";                     //重新赋值profession属性
    console.log(tea.name + "  " + tea.profession);  //输出内容
    View Code
    1. prototype定义的属性属于原型对象(原型类)。
    2. prototype属性只能通过原型对象(原型类)修改其值,不可通过原型对象(原型类)创建出来的对象修改prototype属性。
    3. prototype属性一旦修改则会影响所有通过该原型对象(原型类)创建出来的对象。
  • 相关阅读:
    使用flaskcode创建网页代码编辑器
    jsp资料参考
    商城类需求确认单
    “酒香也怕巷子深” Smartflow-Sharp 工作流
    sql server distribution 库数据文件过大
    大数据平台HADOOP、HIVE、HDSF等介绍和使用看这一篇就够了
    vue 虚拟列表滚动
    关于js逗号运算符与reduce只有1个元素
    css 2行省略 多行省略
    【神经网络搜索】NasBench301 使用代理模型构建Benchmark
  • 原文地址:https://www.cnblogs.com/MirageFox/p/5511958.html
Copyright © 2011-2022 走看看