js中的Object

js中的Object

  1. 浅克隆

    var obj = {
        a: 1,
        b: 2,
        c: 3
    }
    
    方式一:
        var o = Object.assign({}, obj);
    方式二:
        var {...o} = obj;
  2. 深克隆
    JSON.parse(JSON.stringify(obj))
  3. freeze
    浅冻结,属性值不能修改,但是嵌套的引用类型不起作用
        Object.freeze(obj);
        obj.a = 11 // 修改属性无效
  4. seal
    密封对象,不能添加和删除属性
        Object.seal(obj);
        obj.d = 33; // 添加新属性无效
  5. 只读属性
    var obj = {
        a: 1,
        b: 2
    }
    Object.defineProperty(obj, "c", {value: 3, writable: false});
    obj.c = 4; // 无效
    console.log(obj.c);
  6. 不可枚举属性
    var obj = {
        a: 1,
        b: 2
    }
    Object.defineProperty(obj, "c", {value: 3, enumerable: false});
    
    for(let item in obj) {
        console.log(obj[item]); // 1 2
    }
  7. 不可重新配置属性
    var obj = {
        a: 1,
        b: 2
    }
    Object.defineProperty(obj, "c", {value: 3, enumerable: false, configurable: false});
    Object.defineProperty(obj, "c", {value: 3, enumerable: true}); // 报错
  8. 读取属性的配置信息
    var obj = {
        a: 1,
        b: 2
    }
    Object.defineProperty(obj, "c", {value: 3, enumerable: false, configurable: false});
    console.log(Object.getOwnPropertyDescriptor(obj, "c"));
    输出信息
        {
            value: 3,
            writable: false,
            enumerable: false,
            configurable: false
        }
  9. get和set
    var obj = {
        a: 1,
        b: 2
    }
    Object.defineProperty(obj, "bb", {
        get: function() {
            console.log("取值");
            return this.b;
        },
        set: function(value) {
            console.log("赋值", value);
            this.b=value;
        }
    });
    
    obj.bb=1;  // 赋值 1
    console.log(obj.bb);

原文地址:https://www.cnblogs.com/ye-hcj/p/10349215.html

时间: 2024-08-01 05:50:07

js中的Object的相关文章

js中的Object.assign接受两个函数为参数的时候会发生什么?

缘由 今天看到一段代码 return Object.assign(func1, func2); 心生疑惑,为什么 Object.assign 的参数可以是函数? 于是有了下面这一堆东西,其实都是老生常谈的东西,可能是岁数大了吧,有些片段都快丢失了,哈哈 prototype js 中 万物皆是对象!!! proto(隐式原型)与 prototype(显式原型) 对象具有属性proto,可称为隐式原型 实例(对象)的 proto === 构造(该实例)函数的 prototype 函数 Functio

js中通过Object.prototype.toString方法----精确判断对象的类型

判断是否为函数 function isFunction(it) {        return Object.prototype.toString.call(it) === '[object Function]';    } 判断是否为数组: function isArray(o) {   return Object.prototype.toString.call(o) === '[object Array]';  } 由于 JavaScript 中一切都是对象,任何都不例外,对所有值类型应用

Js中的Object.defineProperty

通过Object.defineProperty为对象设置属性,并同时规定属性的属性(可见性,可配置性,可枚举性等) 备注:如果通过var obj = {} obj.age = 18这种方式设置的属性,他的可见性,可配置性,可枚举性等都为true,相当于默认设置了本篇讨论的各种属性都为true 语法:Object.defineProperty(obj, prop, descriptor) 第一个参数:目标对象第二个参数:需要定义的属性或方法的名字.第三个参数:目标属性所拥有的特性.(descrip

js中的Object对象

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

js中调用ocx控件

项目中经常遇到js中要调用c++控件情况,通过控件来实现相关功能操作.如视频控件等 具体js中引用 object的classid 代码参考如下: <body id="body" > <div id="div" style="width:100%;height:100%;"> <object classid="clsid:61978326-6772-4595-9EC3-D23C5CD5E61F" w

js中神奇的运算

先看一段比较神奇的运算和他的结果: {}+[] //0 []+{} //"[object Object]" {}+[] == []+{} //false ({}+[]) == []+{} //true 运算结果不一样,很神奇啊... 我们来看一下js中对Object和Array直接执行运算时会发生什么.由于数组不是一个基本类型,所以在运算过程中,js会尝试将array或object转化成一个基本类型. 在这个转化中,首先会对Array执行一个valueOf函数,如果返回时是基本类型,那

js中数组的检测方法

在js中可以使用Object.prototype.toString.call()的来检测一个对象是否为一个数组 //检测数组 var a = [1, 2]; console.log(typeof a); //object console.log(Object.prototype.toString.call(a)); //[object Array] //检测字符串 var s = "you"; console.log(typeof s); //string console.log(Ob

json Date对象在js中的处理办法(转)

我们在程序用往往通过ajax方式返回json数据,json中包含Date对象时,在js中是Object对象.可以方式获取: 1.new Date(yourJsonDate.time); //你用你的返回Date对象的time值 新建一个js的Date对象. 2.对Js 的Date对象进行格式化.参考以下方法: javascript Date format(js 日期格式化) 方法一: 1 // 对Date的扩展,将 Date 转化为指定格式的String 2 // 月(M).日(d).小时(h)

JS 中对变量类型的判断

总结:1. 一般简单的使用 typeof 或 instanceof 检测(这两种检测的不完全准确)          2. 完全准确的使用 原生js中的 Object.prototype.toString.call  或 jquery中的 $.type 检测 在 JS 中,有 5 种基本数据类型和 1 种复杂数据类型,基本数据类型有:Undefined, Null, Boolean, Number和String:复杂数据类型是Object,Object中还细分了很多具体的类型,比如:Array,