zoukankan      html  css  js  c++  java
  • Javascript高级程序设计-对象

     

    学习Javascript,最难的地方是什么?

    Object(对象)最难,初学者不容易掌握。

    Javascript是一种基于对象(object-based)的语言,它的语法中没有class(类)。

    C#面向对象基础

    1、类是数据封装的基本单位,是重复使用的最小单位。

    类的成员:变量、方法、属性、事件、常数

    对象是类在内存中的实体,类用于描述对象在内存中的数据。

    2、静态方法可以不建立类的对象,即不用new实例化,而用类直接调用:类名.方法名()

    Static变量通常用于配置全局共用的区块

    3、new实例化对象后,对象将会被配置在堆积Heap中,堆栈Stack内保存的是指向堆积Heap中对象所在位置的参考指针。实例化的那个对象用于存放的是指针。

    4、this操作数

    this操作数是指向此对象的参考指针。也就是实例化后就可以使用this来存取这一对象实体。还可以用于解决名称相同的问题:this.Name=Name(参数)。this还可以用来返回目前对象的参考: this.Name=Name ;return this。

    Javascript面向对象基础

    Javascript定义类(class)的三种方法

    一、构造函数

    内部用this关键字指代实例对象。

    function Class() {

        this.name = "名称";

    }

    类的属性和方法,还可以定义在构造函数的prototype对象之上,Javascript规定,每一个构造函数都有一个prototype属性,指向另一个对象。这个对象的所有属性和方法,都会被构造函数的实例继承。

    Class.prototype.pwd = function () {

        alert("密码");

    }

    生成实例的时候,使用new关键字。

    var obj = new Class();

    alert(obj.name); // 名称

    alert(obj.pwd); // 密码

    Prototype模式的验证方法

     

    1.isPrototypeOf()

    这个方法用来判断,某个proptotype对象和某个实例之间的关系。

    alert(Class.prototype.isPrototypeOf(obj)); //true

     

    2.hasOwnProperty()

    每个实例对象都有一个hasOwnProperty()方法,用来判断某一个属性到底是本地属性,还是继承自prototype对象的属性。

    alert(obj.hasOwnProperty("name")); // true

     

    3.in运算符

    in运算符可以用来判断,某个实例是否含有某个属性,不管是不是本地属性。

    alert("name" in obj); // true

     

    二、Object.create()

    为了解决"构造函数法"的缺点,更方便地生成对象, Object.create()用这个方法,"类"就是一个对象,不是函数。

    if (!Object.create) { //兼容各大浏览器

        Object.create = function (o) {

            function F() { }

            F.prototype = o;

            return new F();

        };

    }

    var Obj = {

        fn: function () {

            var o = {};

        }

    };

    var o = Object.create(Obj);

    alert(o.fn())//名称

    这种方法比"构造函数法"简单,但是不能实现私有属性和私有方法,实例对象之间也不能共享数据,对"类"的模拟不够全面。

    三、不使用this和prototype,首先,它也是用一个对象模拟"类",在这个类里面,定义一个构造函数fn(),用来生成实例。

    var Obj = {

        fn: function () {

            var o = {};

            o.name = "名称";

            o.pwd = function () { return "密码"; };

            return o;

        }

    };

    使用的时候,调用fn()方法,就可以得到实例对象。

    alert(Obj.fn().name)  //名称

    这种方法的好处是,容易理解,结构清晰优雅,符合传统的"面向对象编程"的构造,因此可以方便地部署下面的特性。

    封装

    把变量、方法、属性、事件、常数封装到一个对象里。

    继承

    让一个类继承另一个类,实现起来很方便。只要在前者的fn()方法中,调用后者的fn()方法即可。

    私有属性和私有方法

    在fn()方法中,只要不是定义在Obj对象上的方法和属性,都是私有的。

    数据共享

    有时候,我们需要所有实例对象,能够读写同一项内部数据。这个时候,只要把这个内部数据,封装在类对象的里面、fn()方法的外面即可。

    var v1 = Obj.fn().name;

    var v2 = Obj.fn().name;

    alert(v1)//名称

    alert(v2)//名称

    本文下载

  • 相关阅读:
    Mimikatz命令简单使用
    WPA加密数据包简单破解-aircrack-ng
    Pwn相关工具安装
    ubuntu火狐浏览器汉化
    Wireshark-sslkeylogfile
    有关RSA 命令总结
    二、volatile关键字
    一、Java JUC简介
    VUE之图表操作
    Drools+springboot
  • 原文地址:https://www.cnblogs.com/sntetwt/p/3152373.html
Copyright © 2011-2022 走看看