昨天的学习笔记,今天更新上。第三遍看oop,还是理解的比较到位了。
 
1、JavaScript的组成:ECMAScript(最新6) + DOM + BOM
2、数组与对象的应用:
object的基础学习:
对象的分类:js内置类(Number);宿主环境(window);自己创建
对象里面有属性也有方法
创建对象的几种方式
主要分为三种方式:字面量、new() 、create();
属性的一些方法:
1、遍历  for(sx in  p){} 反射式循环注意是无序的:Object.keys(p);返回数组类型的key就可以进行排序了。
一。字面量的方式
1、使用括号的的方式:json 的形式 (字面量 )
var one  ={   name:"chen", age:31,sex:"man"}
typeof one
"object"
a、其中get与set的使用方法:
1、get与set是方法,因为是方法,所以可以进行判断。
2、get是得到 一般是要返回的   set 是设置 不用返回
3、如果调用对象内部的属性约定的命名方式是_age
 
b、其中对象的两种访问方式
.的方式   []的方式
例如创建了:var o = {1:"abc"} 使用o.1保错  只有使用 o["1"]来访问
在循环等方式用[]比较好
c、没有的时候回返回undefault
d、级联访问
 
二、new()方法创建
 
1、使用Object构造函数来创建对象:
 var one = new Object();   使用了Object的关键字
one.name="chen";
one.age=21;
one.name;
chen
one["name'];
chen
 
a、使用defineProperty可以设置属性:
     
Object.defineProperty(object, propertyname, descriptor)
向对象添加多个属性或修改多个现有属性,可使用 Object.defineProperties 
可以设置属性
1、不可写:Object.defineProperty(obj, "newDataProperty", { writable: false });
Object.defineProperty(car,'wheels',{value:4,writable:false});
Object {wheels: 4}
car.wheels = 5;
5
car.wheels
4
          2、添加访问器属性   
a、configurable : true, 可配置特性当设置为true时,属性可以从父对象中删除,未来还可以修改属性的描述符;当设置为false时,属性的描述符会被锁定,无法修改。可以将属性的configurable特性设为false。用于保护对象不被修改,这是一种防御性的编程方式。又得内置对象的感觉:
var car = {};
Object.defineProperty(car, 'doors' , { configurable: true, value:4 });
delete car.doors;
=>true
car.doors;
=>undefined
Object.defineProperty(car, 'doors' , { configurable: false, value:4 });
=>Object {doors: 4}
delete car.doors;
=>false
car.doors;
=>4
b、可枚举特性(enumberable)如果对象的属性可以使用代码来遍历,那那些属性就是可以枚举的。当将其设为false时。那些属性不能被遍历。
var car = {};
Object.defineProperty(car,'doors',{writable:true,configurable:true,enumerable:true,value:4});
Object {doors: 4}
console.log(Object.keys(car));
=> ["doors"]
Object.defineProperty(car,'doors',{writable:true,configurable:true,enumerable:false,value:4});
Object {doors: 4}
console.log(Object.keys(car));
=> []
3、捡视对象
a、Object .getOwnPropertyDescriptor  可以详细的告诉我们对象属性的配置
     Object.getOwnPropertyDescriptor(car,'doors');
     =>Object {value: 4, writable: true, enumerable: false, configurable: true}
 
          b、Object .getOwnPropertyNames 可以返回对象属性的名字,包括那些不能枚举的:
               console.log(Object.getOwnPropertyNames(box).sort());
          c、Object .getPrototypeOf 返回特定对象的原型。有时还可以使用__proto__方法来替代哪个方法
          var a = {} ;
          console.log(Object.getPrototypeOf(a) === Object.prototype && Object.prototype === a.__proto__);
          => true
          d、Object .hasOwnProperty  (“name” in p   )一样 JavaScript的原型链可以让你通过遍历一个对象的实例,返回所有可枚举的属性,包括不存在于哪个对象上但是存在于原型链中的属性。hasOwnProperty方法可以让你分辨出某个属性师傅存在于对象的实例中:
          e、Object .keys   返回对象中可枚举的属性 
          f、Object .isFrozen 如果对象不能拓展,属性也不能修改,那么哪个方法返回true,反之false
          g、Object .isPrototypeOf  哪个方法在对象的整整个原型链中检查每一环,看传入的对象师傅存在于其中:
               Object.prototype.isPrototypeOf([]);
               =>ture
               Function.prototype.isPrototypeOf(()=>{});
               =>true
               Function.prototype.isPrototypeOf(function(){});
               =>true
               Object.prototype.isPrototypeOf(()=>{});
               =>true
          e、isExtensible 可以使用哪个来检查哪个对象是否可被修改
          h、Object .isSealed   Object.valueof 
          j、 Object.is 可以判断两个参入的参数,在需要强制转换的情况下,是否具有相同的值。
          Object.is('ture','ture')
=>true
Object.is('Ture','ture')
=>false
Object.is(undefined,Math.prototype)
=>true
4、修改对象
     a、Object.freeze   冻结对象可以防止它再次被改变。被冻结的对象不能加入新的属性,已有的属性也不能被移除,已有的属性值也不能被改变:
          var bombPop = {wrapping: 'plastic',flavors:['Cherry','LIME','CHEN']};//创建对象
 
console.log(Object.isFrozen(bombPop))   //检查是否不可修改
 =>false
delete bombPop.wrapping;//删除一个属性
=>true
console.log(bombPop.wrapping);//删除成功
=>undefined
Object.freeze(bombPop);//冻结属性
          delete bombPop//     删除一个属性
false //删除失败
bombPop.flavors
["Cherry", "LIME", "CHEN"]
       b、Object.defineProperties   允许定义新的属性或修改已有的属性
          <script type="text/javascript">
    var car = {} ;
    Object.defineProperties (car, {
                'wheels' : {
                    writable: true,
                    configurable: true,
                    enumerable: true,
                    value:4
                },
                'doors' : {
                    writable: true,
                    configurable: true,
                    enumerable: true,
                    value: 4
                }
            }
    );
    console.log(car.doors);
    //=>4
    console.log(car.wheels);
    //=>4
         </script>
     c、Object.defineProperty   允许定义新的属性或修改已有的属(一个)
     d、Object.preventExtentsions 哪个函数可以阻止新的属性被加到一个对象中,与冻结的区别是:可以删除
          var car ={doors:4}
Object.isExtensible(car) ===true //检查是否可以修改
=>true
Object.preventExtensions(car)//冻结
Object.isExtensible(car) ===true
=>false  //不该修改了
car.doors
=>4
delete car.doors; //但是可以删除
=>true
car.doors
=>undefined
car.tires = 4  //也不能新增
=>4
car.tires
=>undefined
          e、Object.prototype
               通过设定对象原型,是对象从现在的原型链解耦,并将此对象加到对象的原型链尾部。哪非常有用,可以吧其他对象的属性和方法,加到已有对象中:
3、使用有参构造函数。
function one(name,age)
{
     this.name=name;
     this.age   =age;
     this.eat=function(){}
 
}
var person = net one("chen",5);实例化 创建对象
person.age();  调用name属性
4、使用prototype关键字  原型对象的方式  建立联系
 
 
 
function person () {}
person.prototype.name="chen";
person.prototype.eat=function(){}
var chen = new person();
person.eat();
5、利用混合模式原型加函数有点继承的味道
- function Car(name,price){
- this.name=name;
- this.price=price;
- }
- Car.prototype.sell=function(){
- alert("我是"+this.name+",我现在卖"+this.price+"万元");
- }
-
- var camry =new Car("凯美瑞",27);
- camry.sell();

JavaScript 中的Object的使用详解笔记(一)的更多相关文章

  1. JavaScript中的鼠标滚轮事件详解

    JavaScript中的鼠标滚轮事件详解/*Firefox注册事件*/ ~~~Firefox: addEventListener('DOMMouseScroll', handler, false)if ...

  2. JavaScript中typeof和instanceof深入详解

    这次主要说说javascript的类型判断函数typeof和判断构造函数原型instanceof的用法和注意的地方. typeof 先来说说typeof吧.首先需要注意的是,typeof方法返回一个字 ...

  3. JavaScript 中 apply 、call 的详解

    apply 和 call 的区别 ECMAScript 规范给所有函数都定义了 call 与 apply 两个方法,它们的应用非常广泛,它们的作用也是一模一样,只是传参的形式有区别而已. 原文作者:林 ...

  4. Javascript中的this关键字用法详解

    在javascript里面,this是一个特殊的对象,它不像其他编程语言那样,是存储在实例中的值,直接指向此实例. 而是作为一个单独的指针,在不同的情况之下,指向不同的位置,这也是为什么我们会将它搞混 ...

  5. javascript中6种基本数据类型详解

    javascript中有5中数据类型(也称为基本数据类型):Undefined.Null.Boolean.Number和String,还有一种复杂数据类型——object,object本质是由一组键值 ...

  6. JavaScript中继承的实现方法--详解

    最近看<JavaScript王者归来>中关于实现继承的方法,做了一些小总结: JavaScript中要实现继承,其实就是实现三层含义:1.子类的实例可以共享父类的方法:2.子类可以覆盖父类 ...

  7. JavaScript中定义类的方式详解

    本文实例讲述了JavaScript中定义类的方式.分享给大家供大家参考,具体如下: Javascript本身并不支持面向对象,它没有访问控制符,它没有定义类的关键字class,它没有支持继承的exte ...

  8. JavaScript中var关键字的使用详解

    作用 声明作用:如声明个变量. 语法 ? 1 var c = 1; 省略var 在javascript中,若省略var关键字而直接赋值,那么这个变量为全局变量,哪怕是在function里定义的. ? ...

  9. JavaScript中事件委托(事件代理)详解

    在JavaScript的事件中,存在事件委托(事件代理),那么什么是事件委托呢? 事件委托在生活中的例子: 有三个同事预计会在周一收到快递.为签收快递,有两种办法:一是三个人在公司门口等快递:二是委托 ...

随机推荐

  1. ACM之Java速成(2)

    acm中Java的应用 Chapter I. Java的优缺点各种书上都有,这里只说说用Java做ACM-ICPC的特点: (1) 最明显的好处是,学会Java,可以参加Java Challenge ...

  2. Python学习总结4:字符串常量与操作汇总

    参考博客:http://www.cnblogs.com/Camilo/archive/2013/09/21/3332267.html http://www.cnblogs.com/SunWentao/ ...

  3. Java基础(54):java四种内部类详解(转)

    一般来说,有4中内部类:常规内部类.静态内部类.局部内部类.匿名内部类.  一.常规内部类:常规内部类没有用static修饰且定义在在外部类类体中. 1.常规内部类中的方法可以直接使用外部类的实例变量 ...

  4. ant的那些闹挺事

    今日发现了一个问题,用ant+hudson去运行脚本代码时,突然ant报错: 即使我在ant的build文件中指定了basedir=“C:/Users/145064/.hudson/jobs/haix ...

  5. android linux

    app 权限 - shell 权限2000 system root .adb 指令 a.查看链接终端设备 adb devices b.进入设备终端 adb shell ;多台设备 adb -s 设备号 ...

  6. paper 28 :一些常见常用数据库的下载网站集锦

    做图像处理+模式识别的童鞋怎么可以没有数据库呢? 但是,如果自己做一个数据库,费时费力费钱先不说,关键是建立的数据库的公信力一般不会高,做出的算法也别人也不好比较,所以呢,下载比较权威的公共数据库还是 ...

  7. Javascript中函数及变量定义的提升

    <html> <head> <title>函数提升</title> <script language="javascript" ...

  8. mysql设置时区方法

    set global time_zone = '+2:00'; ##修改mysql全局时区 set time_zone = '+2:00'; ##修改当前会话时区 flush privileges; ...

  9. python函数传参是传值还是传引用?

    首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传 ...

  10. 清华大学出版社即将推出的又一本挂羊头卖狗肉的劣书 《C语言入门1.2.3—一个老鸟的C语言学习心得》

    http://www.tup.com.cn/book/showbook.asp?CPBH=051892-01