`
alex09
  • 浏览: 974985 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JavaScript中级笔记(5)

阅读更多
一,面向对象的基础
    对象是JavaScript的基础。从最基本的层次上说,对象是一系列属性的集合。

     1,对象的创建
  
 <script type="text/javascript">
    //创建一个新的Object对象,存放在obj变量中
    var obj1 = new Object();
    //设置属性
    obj1.value = 5;
    obj1.click = function(){
     alert("Hello");
    }

    //另一种方式定义一个对象,以键值(key/value)的方式定义属性
    var obj2 = {
      value : 5,
      click : function(){
      alert("Hello");
      }
    };
    </script>


    相信很多朋友对这些创建对象的方式接触过很多次了,都很熟悉了。
    2,对象的使用
    和其他面向对象语言不同的是,JavaScript没有类的概念。在JavaScript里,任何函数都可以被实例化为一个对象。

   
<script type="text/javascript">
    //一个简单的函数,接受名称并将其放入当前上下文中
    function User(name){
     this.name = name;
    }

    var me = new User("cssrain");//指定名称来创建该函数的一个新对象
    alert( me.name );//"cssrain"
    alert( me.constructor == User );//true

    //如果把User当作函数
    User("peter");
    alert( window.name );//因为它的this上下文对象未设定,所以默认是全局的window对象
    </script>


    本段代码通过new User()来创建函数的一个新的对象。创建出的新对象拥有name属性,并且construtor属性指向创建它的函数。

    3,公共方法
     公共方法是在对象的上下文中用户始终可以接触到的。要实现这种方法,需要用到原型属性——prototype。
    对象的原型仍然是对象。给原型对象添加属性后,由该原型实例化的每个对象都可以访问这些属性,即这些属性都是公有化的。

   
<script type="text/javascript">
    //一个简单的函数,接受名称并将其放入当前上下文中
    function User(name){
     this.name = name;
    }
    //将一个新的函数添加到此对象的prototype对象中
    User.prototype.getName = function(){
     return this.name;
    }

    var me = new User("cssrain");//指定名称来创建该函数的一个新对象
    alert( me.getName() ); //"cssrain"
    </script>


    4,私有方法
    这个还比较好理解。字面意思是只能在内部访问。

   
<script type="text/javascript">
    //一个简单的函数,接受名称并将其放入当前上下文中
    function User(name){
     this.name = name;
     function disp(){
      alert("User()函数 私有的");
     }
     //只能内部调用
     disp();
    }

    var me = new User("cssrain");//指定名称来创建该函数的一个新对象
    //me.disp();//不能调用
    //disp();//不能调用
    </script>


    5,特权方法
    它是以公共的方式访问私有变量。

  
 <script type="text/javascript">
    function User(name,age){
     //私有变量
     var year = (new Date()).getFullYear()-age;
     //创建一个特权方法,能够访问year变量,同时属于公共可访问
     this.getBornYear = function(){
      return year;
     }
    }

    var me = new User("cssrain",22);//指定参数来创建该函数的一个新对象
    alert( me.getBornYear() );//"1986"
    </script>


    本质上,特权方式是动态生成的。因为它们是在运行时才添加到对象中的,而不是在代码第一次编译时就已经生成。

    这种动态生成代码的能力不可小视,能根据与你想那个时变量来生成代码是非常有用的。看下面动态生成方法的例子:

   
<script type="text/javascript">
    function User( users ){
     for(var i in users){//遍历所有的属性
            (function(method){
       var p = i;
       method["get"+p]=function(){//创建此属性的一个读取函数
        return users[p];
       }
       method["set"+p]=function(val){//创建此属性的一个设置函数
        users[p] = val;
       }
      })(this);
     }
    }

    var me = new User({name : "cssrain", age : 22});//指定参数来创建该函数的一个新对象
    alert( me.getname() );//"cssrain"
    alert( me.getage() );//"22"

    me.setname("changeCssRain");
    me.setage(23);
    alert( me.getname() );//"changeCssRain"
    alert( me.getage() );//"23"
    </script>


6,静态方法

静态方法的实质跟一般函数没有什么不同,静态方法能保证对象的命名空间的整洁。

   
<script type="text/javascript">
    function User(name,age){
     this.name = name;
     this.age = age;
    }
    //添加到一个User对象的静态方法
    User.cloneUser = function(user){
     //创建并返回一个新的User对象
     return new User( user.name , user.age );
    }

    var u = User.cloneUser({name:"cssrian",age:22});
    alert(u.name);//"cssrain"
    alert(u.age);//22
    </script>


    二.小结

    理解本章所描述的概念和内容是非常重要的, 这是完全掌握专业JavaScript的起点。
分享到:
评论

相关推荐

    JavaScript 中级笔记 第三章

    JavaScript中的作用域和上下文对象是理解这门语言的关键概念,尤其对于中高级开发者来说更是如此。作用域决定了变量的可见性和生命周期,而上下文对象则关乎函数执行时的环境。 首先,我们要明白JavaScript的作用域...

    JavaScript 中级笔记 第五章 面向对象的基础

    JavaScript 中级笔记第五章面向对象的基础主要涵盖了对象的创建、使用、公共方法、私有方法以及特权方法等核心概念。面向对象编程是JavaScript中的重要特性,理解和掌握这些知识点对于提升编程能力至关重要。 1. **...

    JavaScript 中级笔记 第一章

    ### JavaScript中级知识点详解 #### 一、回顾:DOM与事件 **1. DOM (文档对象模型)** DOM 是一种标准的编程接口,用于处理 HTML 和 XML 文档。它定义了如何通过编程方式访问文档结构、内容以及样式。在 Web 开发...

    JavaScript 中级笔记 第四章 闭包

    在JavaScript的中级学习中,掌握闭包的概念是理解高级编程技巧的基础。闭包的特性包括能够记忆并访问函数定义时所在的词法作用域。 在给出的文件内容中,闭包被描述为“内层的函数可以引用存在于包围它的函数内的...

    java中级笔记+severlet jsp 分页 ajax等技术的笔记

    Java中级笔记涵盖了多个关键的Web开发技术,包括Servlet、JSP、分页和Ajax。这些技术在构建动态、交互式的Web应用程序中起着至关重要的作用。 1. **Servlet**:Servlet是Java EE平台中的核心组件,它是一个Java类,...

    JavaScript 中级笔记 第二章

    1,引用 引用是一个指向对象实际位置的指针。看下面的使用引用的例子: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 本例中,两个对象都指向同一个对象,当修改某一个对象的属性内容时,则会影响另一个。...

    JavaScript 基础和中级 代码汇总.zip

    这个名为"JavaScript 基础和中级 代码汇总.zip"的压缩包文件显然是一个JavaScript学习者或开发者积累的实践代码集合,旨在帮助理解和巩固从基础到中级的JavaScript知识。 首先,我们来看看JavaScript的基础部分。...

    韩顺平编写的java学习笔记(全)

    5. **网络编程**:TCP/IP协议的应用,如客户端/服务器模型。 6. **多线程编程**:利用多线程提高程序性能。 #### Java EE基础知识 1. **Java面向对象编程**:与Java SE相似。 2. **数据库编程**:重点在于使用JDBC...

    javaweb笔记.pdf

    JavaWeb笔记.pdf提供了JavaWeb开发的详细知识点,涵盖了基础知识、高级技术、开发框架、安全、性能优化、项目实践、开发工具、面试常见问题等方面,非常适合JavaWeb开发初学者和中级开发者阅读。

    learnjs:JavaScript是面向初学者,中级和高级的最大笔记本,涵盖各种主题和功能,以及一些通用算法,可帮助您立即在JavaScript中学习,理解和工作。

    JavaScript是一种广泛使用的编程语言,尤其在网络开发中占据核心地位。它是一种动态类型的、解释型的、弱类型的脚本语言,主要用于客户端的网页交互,但也可以在服务器端通过Node.js环境运行。JavaScript的主要特点...

    web_note_middle-level:中级前端笔记

    本笔记将详细探讨HTML的中级知识,旨在帮助开发者提升技能水平。 1. **语义化标签** 随着HTML5的引入,一系列语义化标签如, , , , 和等被引入,它们有助于提高页面结构的可读性和可访问性。了解并正确使用这些标签...

    软件设计师中级王勇老师课程笔记-7法律法规+多媒体基础

    常见的编程语言可以分为编译型语言(如C++、Java等)和解释型语言(如Python、JavaScript等)。了解它们之间的区别及适用场景有助于软件设计师在项目初期做出更合理的选型。 #### 语言处理工具 语言处理工具主要...

    java学习笔记

    ### Java学习笔记知识点详解 #### Java 平台与开发概述 - **Java平台分类:** - **J2SE(Java SE):** 标准版,适用于桌面应用程序开发。 - **J2EE(Java EE):** 企业版,专为Web应用和服务端应用程序设计。 -...

    awesome-javascript-es:链接,资源等的集合关于西班牙语JavaScript

    中级JS笔记 高级JS注释 现在使用JavaScript 互动课程:关闭或关闭 学习AngularJS-这样的列表,但重点是AngularJS。 网站/博客 特定JavaScript NodeHispano 费内特 它们包括JavaScript,但不是特定的 ...

    syllabus:纽约大学高级JavaScript课程的教学大纲

    布局永久链接默认/高级JavaScript教学大纲如果您是老师或对课程的设计感兴趣,请参阅...先决条件 ()或同等学历了解JavaScript中的变量,数据类型,控制流和基本功能用法精通HTML的中级知识,至少具有CSS的基础知识jQu

Global site tag (gtag.js) - Google Analytics