`

javascript 特性1

 
阅读更多

基于对象 与 面向对象:
    基于对象
        具有封装的特性
       
    面向对象
        基于对象  并且可以继承  多态
       
    javascript 是基于对象的,每个对象都可以有它独特的属性。但是它的每一个对象
    不能被继承。

    对象之间存在一种 泛化 的关系,即说明这两个对象是 一类 对象。通过类来声明,这样诞生
    的很多对象都是一个类的对象。而在javascript中,有两种方式是不具有这样的 泛化 关系的。

    var a = new Object();
    a.age = 20;
    a.gengder = 'male';

    var b = {age:20, gender:'male'};

    这样声明的两个对象你能说他们是一类对象吗?

    function Cust(a, g)
    {
        this.age = age;
        this.gender = gender;
    }
    var cust1 = new Cust(20, 'male');
    var cust2 = new Cust(22, 'famale');

 



    这样的呢?

    在 java c++ 等的面向对象的语言中,都是先有类的声明,后才能有类的对象。
    继承 封装 多态 都是在类的声明的基础上进行的改进,所以说面向对象的特性是
    基于对象 且 可以继承 实现多态的。

封装 与 闭包
    所谓封装,就是指一个类的 属性 或 方法 可以被声明为 共有或私有的,只有共有的
    方法和属性才能被外部环境访问。
    javascript 函数的对象特征:对象的属性和方法都是共有的    。
    javascript 的另一个特征 闭包 就完成了属性和方法的私有化,使得javascript
    丝毫不逊色于面向对象的各大语言。

    闭包就是利用变量的作用域来控制对象中属性的访问权限。

    function Student(name, age)
    {
        this.name = name;
        this.age = age;
        var addr = "Address infomation";
    }
   
    var stu = new Student("xiaoming", 20);
    // 对于外部环境来说,addr 变量是不可访问的。
    alert(stu.name + ":" + stu.age); // xiaoming:20
    alert(stu.addr);    // undefined 


    我们通过这样的方式来将不公开的属性做以 "封装",就叫做闭包。
    在包内,我们声明对象的属性,在包外没有 this 指向的属性都不能被访问。

对象的 getter 和 setter 属性
    在java当中,我们通常会给一个私有的属性提供 getter 和 setter 方法来供外部
    访问。在javascript当中也一样具有这样的方法,而且javascript当中的getter
    还有一种表现形式,它可以表现成为对象的一个属性。

    getter 方法模板://先看例子
        注意:
            getter 属性中不能访问 prototype 类型的属性
            getter 方法 可以
        this.property =
        {
            valueOf : function(){return ...},
            toString : function(){return ...}
        }


        例子:

            function Student1(name, age, gender)
            {
                this.name = name;
                this.age = age;
                this.gender = gender;
               
                // getter 方法的形式获得信息
                this.getInfo = function ()
                {
                    return "Hello ! My name is " + name
                           + "\n I am " + age + " years old !"
                           + "\nI'a " + gender;
                }
            }

            function Student2(name, age, gender)
            {
                this.name = name;
                this.age = age;
                this.gender = gender;
               
                //定义成属性  模拟getter方法  来获取信息
                this.info =
                {
                    valueOf:function()
                    {
                        return "Hello ! My name is " + name
                           + "\n I am " + age + " years old !"
                           + "\nI'a " + gender;
                    },
                    toString:function()
                    {   
                        return "Hello ! My name is " + name
                           + "\n I am " + age + " years old !"
                           + "\nI'a " + gender;
                    }
                }
            }

            var stu1 = new Student1("xiaoming", 22, "male");
            var stu2 = new Student2("xiaofang", 21, "famale");

            alert(stu1.getInfo()); // getter 方法
            alert(stu2.info); // 对象的 getter 属性

 

       
    对象的setter属性目前只能由 setXxx 方法来实现,目前的 ECMA Script V3 不支持
    setter 属性。   

分享到:
评论

相关推荐

    Professional JavaScript for Web Developers, 3rd Edition 附书中代码

    二、高级JavaScript特性 1. ECMAScript 5及更新版本:书中涵盖了ECMAScript 5引入的新特性,如Array和Object的方法增强、严格模式等。 2. 面向对象编程:介绍类、构造函数、原型对象等,以及ES6引入的类语法和模块...

    深入理解JavaScript系列

    本书共分四个部分,第1部分帮助读者快速入手,掌握基本的JavaScript编程要点;第2部分介绍JavaScript的发展和技术背景;第3部分深入探索JavaScript,介绍了语法、值、运算符、布尔类型、数字、字符串、语句、异常...

    JavaScript ES6新增特性

    JavaScript ES6新增特性

    JavaScript权威指南(JavaScript犀牛书一本)

    1. **基础语法**:讲解了变量、数据类型、运算符、流程控制(如条件语句、循环)、函数等基本元素,帮助初学者建立JavaScript编程的基本框架。 2. **对象和原型**:深入探讨了JavaScript的面向对象特性,包括对象...

    JavaScript语言精粹完整版

    自ES6开始,JavaScript引入了许多新特性,如let和const声明、箭头函数、模板字符串、类和模块等,这些特性极大地丰富了JavaScript的语法,使其更加现代化和高效。 ### 实战案例分析 《JavaScript语言精粹》还提供了...

    javascript-idiosyncrasies, 对初学者的一组Javascript特性.zip

    javascript-idiosyncrasies, 对初学者的一组Javascript特性 JavaScript特性这是一个 Collection 中的事物,可以能无法被识别,espcially是初学者。免责声明:其中一些代码Fragment只是演示了 JavaScript 奇怪的部分...

    org.mozilla.javascript-1.7.2.jar

    虽然它不支持最新的JavaScript特性,但在许多旧项目或对新特性需求不高的场合,Rhino仍然是一个可靠的工具。理解并熟练使用Rhino,可以帮助开发者更好地融合JavaScript和Java,实现更灵活、高效的编程。

    JavaScript — 对象和属性的特性1

    在JavaScript中,对象是语言的核心组成部分,它们由一组属性组成,每个属性都有其特定的特性。本文将深入探讨JavaScript对象和属性的特性,包括`[[Prototype]]`、`[[Class]]`、`get`和`set`访问器、以及如何通过`...

    javascript语言精粹 pdf

    最后,JavaScript的ES6及后续版本引入了许多新特性,如箭头函数、模板字符串、解构赋值、类和模块等。掌握这些新特性,能够让你的代码更现代,更符合最佳实践。 总的来说,《JavaScript语言精粹》涵盖了JavaScript...

    JavaScript忍者秘籍1

    1. **函数**:函数是JavaScript中的基本构建块,用于封装可重复使用的代码段。书中深入探讨了函数的创建、调用和作用域,包括匿名函数、函数表达式和立即执行函数表达式(IIFE)。 2. **对象**:JavaScript的面向对象...

    JavaScript内核系列 pdf

    这份资料详细阐述了JavaScript的各个方面,包括语法特性、执行机制、内存管理以及优化技巧,旨在帮助读者深入理解这门广泛应用于Web开发的语言。 一、JavaScript简介 JavaScript,最初由Brendan Eich在1995年创建,...

    JavaScript语言的特性和应用 (1).pdf

    JavaScript 语言的特性和应用 JavaScript 是一种基于对象的脚本语言,主要应用于 Web 页面的开发中。它可以与 HTML、Java Applet 等技术一起实现多个对象的链接和动态交互。JavaScript 具有以下特性: 1. 基于对象...

    JavaScript文档

    “javascript5.5.chm”可能指的是JavaScript 5.5版本的相关文档,这个版本包含了ECMAScript 5的一些特性。ECMAScript是JavaScript的标准,5.5可能是对5.1或5.0的一个小更新。这个文档可能会详细介绍新增的语法特性,...

    Head First Javascript源码

    1. **变量和数据类型**:JavaScript的动态类型系统允许你在同一变量上存储不同类型的值。例如,你可以声明一个变量并赋予字符串、数字或对象值。 2. **作用域和闭包**:理解变量的作用域至关重要,它决定了变量在...

    javascript帮助文档帮助学习javascript

    再者,"javascript5.chm"可能是关于JavaScript 5.0版本的文档,这个版本在ECMAScript 5中得到标准化,引入了许多重要的新特性,如对象字面量、函数表达式、数组和对象的方法等。通过这个文档,学习者可以深入理解这...

    JavaScript高级编程 pdf

    16. **浏览器兼容性**:理解不同浏览器对JavaScript特性的支持程度,以及如何使用polyfill或Babel进行兼容性处理。 17. **调试技巧**:学会使用开发者工具进行代码调试,包括断点、步进执行、查看变量值等。 18. *...

    JavaScript语言的特性和应用.pdf

    JavaScript 语言的特性和应用 JavaScript 是一种基于对象的脚本语言,通过嵌入或整合在标准 HTML 语言中实现的。JavaScript 具有以下特性: 1. 基于对象的脚本语言:JavaScript 是一种基于对象的脚本语言,面向...

    JavaScript的面向对象特性浅析与范例.pdf

    "JavaScript面向对象特性浅析与范例" JavaScript是一种基于原型的解释型语言,它允许在任意时刻给一个对象添加任意多的属性和方法。 JavaScript的面向对象特性是指它可以实现面向对象编程的部分特性,而不是完全...

    javascript中文经典帮助手册

    手册可能涵盖了语言的基础语法、核心概念以及高级特性,旨在帮助读者有效地学习和应用JavaScript。 JavaScript的基础知识包括变量、数据类型、运算符、流程控制(如条件语句和循环)、函数、对象和数组等。变量是...

Global site tag (gtag.js) - Google Analytics