前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >js面向对象思想精要

js面向对象思想精要

作者头像
天天_哥
发布2018-09-29 13:48:59
1.2K0
发布2018-09-29 13:48:59
举报
文章被收录于专栏:天天
第一章 原始类型和引用类型

1.原始类型

代码语言:javascript
复制
1.1原始类型(5种)
包括:number,string,boolean,null,undefined;
这是一些简单的数据,保存在栈空间;

1.2.鉴别原始类型
使用typeof方法,
eg: console.log(10);//number;
特例:鉴别null时返回的是object;

2.引用类型(js中的对象)

代码语言:javascript
复制
2.1创建
 var person = {name:"zhangsan",age:26};
    console.log(person.name)//zhangsan
 var child = new Object();
    child.name = "zhangsan";
    console.log(child.name);//zhangsan
2.2对象的解除
对象在不使用时将其解除,最好的办法是在对象变量置为null,
让垃圾收集器对内存释放;
2.3添加和删除属性
2.4引用类型的鉴别
   2.4.1函数使用typeof鉴别时返回的事function,对于非函数则返回的
          object
   2.4.2使用instanceof操作符,
 eg:
       var child = new Object();
       child.name = "zhangsan";
         console.log(child instanceof Object);//true
    2.4.3 鉴别数组的方法
         a.使用instanceof操作符
         b.使用arr.isArray()
第二章 函数

1.声明

代码语言:javascript
复制
 var sum = function(a,b){
        return a+b;
    };
 function sum1(a,b){
        return a+b;
    }

2.参数

代码语言:javascript
复制
arguments对象,
函数的参数实际上保存在arguments对象;

3.重载 让一个函数具有多个标签名

代码语言:javascript
复制
eg:
 function sum(a){
        console.log(a);
    }
    function sum(){
        console.log("apple")
    }
   sum("b")//apple
使用arguments模仿重载;
eg:
  function sum(a){
        if(arguments.length===0){
            console.log("apple")
        }
        console.log(a);
    }
    sum("b")//b

4.对象的方法

代码语言:javascript
复制
4.1 this对象
4.2 改变this
方法一
call():第一个参数表示this的指向,其后的参数代表需要传入函数的参数
    eg:
   function sayName(name){
        console.log(name+":"+this.age)
    }
    var lisi = {
        age:12
    };
    var wangwu = {
        age:30
    };
    var age = 100;
    sayName.call(this,"张三");//张三:100
    sayName.call(lisi,"李四");//李四:12
    sayName.call(wangwu,"王五");//王五:30
 方法二 apply()第一个参数this指向,第二个参数表示传入函数参数数的组形
eg:
    sayName.apply(this,["张三"]);
    sayName.apply(lisi,["李四"]);
    sayName.apply(wangwu,["王五"]);
            和call()输出结果一样
 方法三  bind()
待研究
第三章 对象

1.属性操作

代码语言:javascript
复制
1.定义属性  object.name = "张三"
2.属性检测  
 方法:in操作符
    eg:
       var child = new Object();
       child.name = "zhangsan";
       console.log("name" in child)//true
3.删除属性
方法:delete object.属性;
eg: delete child.name;
    console.log(child.name);//undefined
4.属性枚举
方法一
eg:
    var person = {name:"zhangsan",age:26};
    for(key in person){
        console.log(key+":"+person[key])
    }
结果:name:zhangsan
      age:26
方法二:  Object.keys()得到可枚举属性的名字的数组
eg:
var person = {name:"zhangsan",age:26};
    console.log(Object.keys(person));//["name","age"]
5.属性类型
待补充
6.属性特征
a.[[Enumerable]]:是否可以遍历该属性
b.[[Configurable]]:是否可以配置
c.改变属性特征的方法
      Object.defineProperty()方法
eg:
     var person = {name:"zhangsan",age:26};
    Object.defineProperty(person,"name",{
        enumerable:false
    });
    console.log(person.propertyIsEnumerable("name"));//false
d.完整的定义一个数据属性
eg:
    var person ={};
    Object.defineProperty(person,"name",{
        value:"张三",
        enumerable:true,
        configurable:false,
        writable:false

    });
    console.log(person.name);//张三
    person.name = "lisi";
    console.log(person.name);//张三
e.定义多个数据属性
eg:
       var person ={};
    Object.defineProperties(person,{
        name:{
        value:"张三",
        enumerable:true,
        configurable:false,
        writable:false
        },
        age:{
            value:25,
            enumerable:true,
            configurable:true,
            writable:false
        }
    }
    );
    console.log(person.age);//25
f.获取属性特征
eg:
   var descriptor = Object.getOwnPropertyDescriptor(person,"name");
    console.log(descriptor.enumerable);//true
7.禁止修改对象
方法一:禁止扩展    Object.preventExtensions(person);
使用该方法后不能添加新的属性,可以用Object.isExtensible(person)检测是否被禁止扩展,
方法二:对象封印    Object.seal(person)
使用该方法,不能添加,也不能删除和改变,可以使用Object.isSealed(person)检测是否被封印
方法三:对象冻结   Object.freeze(person)
使用该方法不能添加,不能删除和改变,也不能写入数据,相当于一个只读的封印对象,可以使用Object.isFrozen(person)检测是否被冻结,
第四章 构造函数和原型对象
代码语言:javascript
复制
一.构造函数
function Person(name,age){
      this.name = name;
      this.age = age;
      this.sayName = function(){
            console.log(this.name)
}
}
var person1 = new person;
二.原型对象
几乎所有的函数都具有一个prototype属性,跟踪其原型对象,该属性是一个指向该实例使用的原型对象的指针,
第五章 继承
第六章 对象模式
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.10.15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一章 原始类型和引用类型
  • 第二章 函数
  • 第三章 对象
  • 第四章 构造函数和原型对象
  • 第五章 继承
  • 第六章 对象模式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档