zoukankan      html  css  js  c++  java
  • JS面向对象编程(进阶理解)

    JS 面向对象编程

    如何创建JS对象

    1. JSON语法声明对象(直接量声明对象)

       var obj = {};
      
    2. 使用 Object 创建对象

       var obj = new Object();
      

    JS对象可以后期添加属性

    案例

    var obj = {};
    obj.name = "Tom";
    
    var obj2 = new Object();
    obj2.name = "Jerry";
    

    对象特点:

    1. new Object() 和 JSON 语法创建的对象没有差别!

      • JSON语法简洁方便, 更加容易使用
    2. 对象可以随时添加属性

      • 对象.属性 = 值
    3. 不存在的属性, 值是 undefined

      • undefined 相当于 false, 利用这个特点可以用于检测属性是否存在

          if(! obj.age){
          	console.log('没有age属性');
          }
        
          if(obj.age){
          	console.log('年龄:'+obj.age);	
          }
        
    4. 可以随时删除对象的属性

       delete 对象.属性;
      
    5. JS Object的底层本质是一个散列表!

      • 为对象添加属性, 本质是添加了 key:value, key是属性名, value是属性值.
      • 访问对象属性, 本质是get(key)

    JS对象没有封装性可言! 因为不能完整支持面向对象3大特性, 所有JS不是面向对象的编程语言!

    JS 对象的方法

    js对象的方法, 本质是一个属性, 是一个值是函数对象的属性!

    var obj = {};
    obj.name = "Tom";
    obj.who = function(){
    	console.log(this.name);
    }; 
    

    调用方法与访问属性

    obj.who();//调用方法
    obj.who; 访问属性的值, 函数对象
    

    可以像属性一样删除方法

    delete obj.who
    

    可以像属性一样, 修改方法!

    obj.who=function(){
    	console.log(this.name);
    };
    obj.who=function(){
    	console.log('Hello World!');
    };
    //who方法引用最后一个函数对象
    

    JS方法没有重载!!

    obj.add = function(a, b){
    	return a+b;
    }
    obj.add = function(a, b, c){
    	return a+b+c;
    }
    //最后只保留最后的方法: add = a+b+c
    obj.add(1,2) //返回未定义
    obj.add(1,2,3) //返回6
    

    使用JSON直接声明属性和方法

    var obj = {
    	name:'Tom', 
    	age:18, 
    	who:function(){
    		console.log(this.name);
    	}
    };
    //后期扩展属性
    obj.price=25;
    

    默认的变量和函数

    在网页值直接声明的变量和函数, 是window对象的属性和方法

    也可以利用赋值, 修改window提供的属性和方法:

    //重写JS原生alert函数
    window.alert=function(e){
    	$('#can').load('./alert/alert_error.html',function(){
    		$('#error_info').text(' '+e);
    		$('.opacity_bg').show();
    	});
    }
  • 相关阅读:
    日志记录到txt文件
    使用NuGet安装EntityFramework4.2
    Redis 安装与简单示例 <第一篇>
    时间加减时间段(年、月、日、分、秒)
    控件属性设置
    window.showModalDialog 与window.open传递参数的不同?
    如何进行js动态生成option?如何实现二级连动?
    System.Data.SqlClient.SqlError: 备份集中的数据库备份与现有的 'XXX' 数据库不同
    如何激发手机的高分辨率
    PHP--正则表达式和样式匹配--小记
  • 原文地址:https://www.cnblogs.com/chentging/p/7156649.html
Copyright © 2011-2022 走看看