JavaScript中Object对象方法超详细讲解举例说明仅此一篇

  • Object.assign()
  • Object.create()
  • Object.values()
  • Object.entries()
  • Object.freeze()
  • Object.fromEntries()
  • Object.is()
  • Object.keys()
  • Object.values()
  • Object.seal()
  • Object.defineProperties()
  • Object.defineProperty()
  • Object.getOwnPropertyDescriptor()
  • Object.getOwnPropertyDescriptors()
  • Object.getOwnPropertyNames()
  • Object.getOwnPropertySymbols()
  • Object.getPrototypeOf()

在JavaScript中,几乎所有的对象都是Object类型的实例,它们都会从Object.prototype继承属性和方法。Object 构造函数为给定值创建一个对象包装器。Object构造函数,会根据给定的参数创建对象。

  • 如果给定值是 nullundefined,将会创建并返回一个空对象
  • 如果传进去的是一个基本类型的值,则会构造其包装类型的对象
  • 如果传进去的是引用类型的值,仍然会返回这个值,经他们复制的变量保有和源对象相同的引用地址

Object.assign()

Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象分配到目标对象。它将返回目标对象。

语法

Object.assign(target, ...sources)

参数

  • target

    目标对象。

  • sources

    源对象。

返回值

  • 目标对象。

例子

const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };const returnedTarget = Object.assign(target, source);console.log(target);
// expected output: Object { a: 1, b: 4, c: 5 }console.log(returnedTarget);
// expected output: Object { a: 1, b: 4, c: 5 }

Object.create()

Object.create()方法创建一个新对象,使用现有的对象来提供新创建的对象的__proto__。

语法

Object.create(proto,[propertiesObject])

参数

  • proto

    新创建对象的原型对象。

  • propertiesObject

    可选。需要传入一个对象,该对象的属性类型参照Object.defineProperties()的第二个参数。如果该参数被指定且不为 undefined,该传入对象的自有可枚举属性(即其自身定义的属性,而不是其原型链上的枚举属性)将为新创建的对象添加指定的属性值和对应的属性描述符。

返回值

  • 一个新对象,带着指定的原型对象和属性。

例子

const person = {isHuman: false,printIntroduction: function() {console.log(`My name is ${this.name}. Am I human? ${this.isHuman}`);}
};const me = Object.create(person);me.name = 'Matthew'; // "name" is a property set on "me", but not on "person"
me.isHuman = true; // inherited properties can be overwrittenme.printIntroduction();
// expected output: "My name is Matthew. Am I human? true"

Object.values()

Object.values()方法返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用for...in循环的顺序相同 ( 区别在于 for-in 循环枚举原型链中的属性 )。

语法

Object.values(obj)

参数

  • obj

    被返回可枚举属性值的对象。

返回值

  • 一个包含对象自身的所有可枚举属性值的数组。

描述

Object.values()返回一个数组,其元素是在对象上找到的可枚举属性值。属性的顺序与通过手动循环对象的属性值所给出的顺序相同。

例子

var obj = { foo: 'bar', baz: 42 };
console.log(Object.values(obj)); // ['bar', 42]// array like object
var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.values(obj)); // ['a', 'b', 'c']// array like object with random key ordering
// when we use numeric keys, the value returned in a numerical order according to the keys
var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.values(an_obj)); // ['b', 'c', 'a']// getFoo is property which isn't enumerable
var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
my_obj.foo = 'bar';
console.log(Object.values(my_obj)); // ['bar']// non-object argument will be coerced to an object
console.log(Object.values('foo')); // ['f', 'o', 'o']

Object.entries()

Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环还会枚举原型链中的属性)。

语法

Object.entries(obj)

参数

  • obj

    可以返回其可枚举属性的键值对的对象。

返回值

例子

const obj = { foo: 'bar', baz: 42 };
console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ]// array like object
const obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.entries(obj)); // [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ]// array like object with random key ordering
const anObj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.entries(anObj)); // [ ['2', 'b'], ['7', 'c'], ['100', 'a'] ]// getFoo is property which isn't enumerable
const myObj = Object.create({}, { getFoo: { value() { return this.foo; } } });
myObj.foo = 'bar';
console.log(Object.entries(myObj)); // [ ['foo', 'bar'] ]// non-object argument will be coerced to an object
console.log(Object.entries('foo')); // [ ['0', 'f'], ['1', 'o'], ['2', 'o'] ]// iterate through key-value gracefully
const obj = { a: 5, b: 7, c: 9 };
for (const [key, value] of Object.entries(obj)) {console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"
}// Or, using array extras
Object.entries(obj).forEach(([key, value]) => {console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"
});

例子

const object1 = {a: 'somestring',b: 42
};for (const [key, value] of Object.entries(object1)) {console.log(`${key}: ${value}`);
}// expected output:
// "a: somestring"
// "b: 42"

Object.freeze()

Object.freeze() 方法可以冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。此外,冻结一个对象后该对象的原型也不能被修改。freeze() 返回和传入的参数相同的对象。

语法

Object.freeze(obj)

参数

  • obj

    要被冻结的对象。

返回值

  • 被冻结的对象。

例子

冻结对象

var obj = {prop: function() {},foo: 'bar'
};// 新的属性会被添加, 已存在的属性可能
// 会被修改或移除
obj.foo = 'baz';
obj.lumpy = 'woof';
delete obj.prop;// 作为参数传递的对象与返回的对象都被冻结
// 所以不必保存返回的对象(因为两个对象全等)
var o = Object.freeze(obj);o === obj; // true
Object.isFrozen(obj); // === true// 现在任何改变都会失效
obj.foo = 'quux'; // 静默地不做任何事
// 静默地不添加此属性
obj.quaxxor = 'the friendly duck';// 在严格模式,如此行为将抛出 TypeErrors
function fail(){'use strict';obj.foo = 'sparky'; // throws a TypeErrordelete obj.quaxxor; // 返回true,因为quaxxor属性从来未被添加obj.sparky = 'arf'; // throws a TypeError
}fail();// 试图通过 Object.defineProperty 更改属性
// 下面两个语句都会抛出 TypeError.
Object.defineProperty(obj, 'ohai', { value: 17 });
Object.defineProperty(obj, 'foo', { value: 'eit' });// 也不能更改原型
// 下面两个语句都会抛出 TypeError.
Object.setPrototypeOf(obj, { x: 20 })
obj.__proto__ = { x: 20 }

冻结数组

let a = [0];
Object.freeze(a); // 现在数组不能被修改了.a[0]=1; // fails silently
a.push(2); // fails silently// In strict mode such attempts will throw TypeErrors
function fail() {"use strict"a[0] = 1;a.push(2);
}fail();

被冻结的对象是不可变的。但也不总是这样。下例展示了冻结对象不是常量对象(浅冻结)。

obj1 = {internal: {}
};Object.freeze(obj1);
obj1.internal.a = 'aValue';obj1.internal.a // 'aValue'

对于一个常量对象,整个引用图(直接和间接引用其他对象)只能引用不可变的冻结对象。冻结的对象被认为是不可变的,因为整个对象中的整个对象状态(对其他对象的值和引用)是固定的。注意,字符串,数字和布尔总是不可变的,而函数和数组是对象。

要使对象不可变,需要递归冻结每个类型为对象的属性(深冻结)。当你知道对象在引用图中不包含任何 (循环引用)时,将根据你的设计逐个使用该模式,否则将触发无限循环。对 deepFreeze() 的增强将是具有接收路径(例如Array)参数的内部函数,以便当对象进入不变时,可以递归地调用 deepFreeze() 。你仍然有冻结不应冻结的对象的风险,例如[window]。

// 深冻结函数.
function deepFreeze(obj) {// 取回定义在obj上的属性名var propNames = Object.getOwnPropertyNames(obj);// 在冻结自身之前冻结属性propNames.forEach(function(name) {var prop = obj[name];// 如果prop是个对象,冻结它if (typeof prop == 'object' && prop !== null)deepFreeze(prop);});// 冻结自身(no-op if already frozen)return Object.freeze(obj);
}obj2 = {internal: {}
};deepFreeze(obj2);
obj2.internal.a = 'anotherValue';
obj2.internal.a; // undefined

Object.fromEntries()

Object.fromEntries() 方法把键值对列表转换为一个对象。

语法

Object.fromEntries(iterable);

参数

  • iterable

    类似 ArrayMap 或者其它实现了可迭代协议的可迭代对象。

返回值

  • 一个由该迭代对象条目提供对应属性的新对象。

示例

Map 转化为 Object

通过 Object.fromEntries, 可以将 Map 转换为 Object:

const map = new Map([ ['foo', 'bar'], ['baz', 42] ]);
const obj = Object.fromEntries(map);
console.log(obj); // { foo: "bar", baz: 42 }

Array 转化为 Object

通过 Object.fromEntries, 可以将 Array 转换为 Object:

const arr = [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ];
const obj = Object.fromEntries(arr);
console.log(obj); // { 0: "a", 1: "b", 2: "c" }

对象转换

Object.fromEntries 是与 Object.entries() 相反的方法,用 数组处理函数 可以像下面这样转换对象:

const object1 = { a: 1, b: 2, c: 3 };const object2 = Object.fromEntries(Object.entries(object1).map(([ key, val ]) => [ key, val * 2 ])
);console.log(object2);
// { a: 2, b: 4, c: 6 }

Object.is()

Object.is() 方法判断两个值是否为同一个值。

语法

Object.is(value1, value2);

参数

  • value1

    被比较的第一个值。

  • value2

    被比较的第二个值。

返回值

  • 一个 Boolean 类型标示两个参数是否是同一个值。

例子

// Object.is() 方法判断两个值是否为同一个值。如果满足以下条件则两个值相等:// 都是 undefined// 都是 null// 都是 true 或 false// 都是相同长度的字符串且相同字符按相同顺序排列// 都是相同对象(意味着每个对象有同一个引用)// 都是数字且// 都是 +0// 都是 -0// 都是 NaN// 或都是非零而且非 NaN 且为同一个值

Object.keys()

Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致 。

语法

Object.keys(obj)

参数

  • obj

    要返回其枚举自身属性的对象。

返回值

  • 一个表示给定对象的所有可枚举属性的字符串数组。

例子

// simple array
var arr = ['a', 'b', 'c'];
console.log(Object.keys(arr)); // console: ['0', '1', '2']// array like object
var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.keys(obj)); // console: ['0', '1', '2']// array like object with random key ordering
var anObj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.keys(anObj)); // console: ['2', '7', '100']// getFoo is a property which isn't enumerable
var myObj = Object.create({}, {getFoo: {value: function () { return this.foo; }}
});
myObj.foo = 1;
console.log(Object.keys(myObj)); // console: ['foo']

如果你想获取一个对象的所有属性,,甚至包括不可枚举的,请查看Object.getOwnPropertyNames

Object.values()

Object.values()方法返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用for...in循环的顺序相同 ( 区别在于 for-in 循环枚举原型链中的属性 )。

语法

Object.values(obj)

参数

  • obj

    被返回可枚举属性值的对象。

返回值

  • 一个包含对象自身的所有可枚举属性值的数组。

示例

var obj = { foo: 'bar', baz: 42 };
console.log(Object.values(obj)); // ['bar', 42]// array like object
var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.values(obj)); // ['a', 'b', 'c']// array like object with random key ordering
// when we use numeric keys, the value returned in a numerical order according to the keys
var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.values(an_obj)); // ['b', 'c', 'a']// getFoo is property which isn't enumerable
var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
my_obj.foo = 'bar';
console.log(Object.values(my_obj)); // ['bar']// non-object argument will be coerced to an object
console.log(Object.values('foo')); // ['f', 'o', 'o']

Object.seal()

Object.seal()方法封闭一个对象,阻止添加新属性并将所有现有属性标记为不可配置。当前属性的值只要原来是可写的就可以改变。

语法

Object.seal(obj)

参数

  • obj

    将要被密封的对象。

返回值

  • 被密封的对象。

例子

var obj = {prop: function() {},foo: 'bar'
};// 可以添加新的属性
// 可以更改或删除现有的属性
obj.foo = 'baz';
obj.lumpy = 'woof';
delete obj.prop;var o = Object.seal(obj);o === obj; // true
Object.isSealed(obj); // === true// 仍然可以修改密封对象的属性值
obj.foo = 'quux';// 但是你不能将属性重新定义成为访问器属性
// 反之亦然
Object.defineProperty(obj, 'foo', {get: function() { return 'g'; }
}); // throws a TypeError// 除了属性值以外的任何变化,都会失败.
obj.quaxxor = 'the friendly duck';
// 添加属性将会失败
delete obj.foo;
// 删除属性将会失败// 在严格模式下,这样的尝试将会抛出错误
function fail() {'use strict';delete obj.foo; // throws a TypeErrorobj.sparky = 'arf'; // throws a TypeError
}
fail();// 通过Object.defineProperty添加属性将会报错
Object.defineProperty(obj, 'ohai', {value: 17
}); // throws a TypeError
Object.defineProperty(obj, 'foo', {value: 'eit'
}); // 通过Object.defineProperty修改属性值

Object.defineProperties()

Object.defineProperties() 方法直接在一个对象上定义新的属性或修改现有属性,并返回该对象。

语法

Object.defineProperties(obj, props)

参数

  • obj

    在其上定义或修改属性的对象。

  • props

    要定义其可枚举属性或修改的属性描述符的对象。对象中存在的属性描述符主要有两种:数据描述符和访问器描述符(更多详情,请参阅Object.defineProperty())。描述符具有以下键:

    configurable``true 只有该属性描述符的类型可以被改变并且该属性可以从对应对象中删除。 默认为 false``enumerable``true 只有在枚举相应对象上的属性时该属性显现。 默认为 false``value与属性关联的值。可以是任何有效的JavaScript值(数字,对象,函数等)。 默认为 undefined.writable``true只有与该属性相关联的值被assignment operator (en-US)改变时。 默认为 false``get作为该属性的 getter 函数,如果没有 getter 则为undefined。函数返回值将被用作属性的值。 默认为 undefined``set作为属性的 setter 函数,如果没有 setter 则为undefined。函数将仅接受参数赋值给该属性的新值。 默认为 undefined

返回值

  • 传递给函数的对象。

例子

var obj = {};
Object.defineProperties(obj, {'property1': {value: true,writable: true},'property2': {value: 'Hello',writable: false}// etc. etc.
});

Object.defineProperty()

Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。

语法

Object.defineProperty(obj, prop, descriptor)

参数

  • obj

    要定义属性的对象。

  • prop

    要定义或修改的属性的名称或 Symbol

  • descriptor

    要定义或修改的属性描述符。

返回值

  • 被传递给函数的对象。

例子

const object1 = {};Object.defineProperty(object1, 'property1', {value: 42,writable: false
});object1.property1 = 77;
// throws an error in strict modeconsole.log(object1.property1);
// expected output: 42

Object.getOwnPropertyDescriptor()

Object.getOwnPropertyDescriptor() 方法返回指定对象上一个自有属性对应的属性描述符。(自有属性指的是直接赋予该对象的属性,不需要从原型链上进行查找的属性)

语法

Object.getOwnPropertyDescriptor(obj, prop)

参数

  • obj

    需要查找的目标对象

  • prop

    目标对象内属性名称

返回值

  • 如果指定的属性存在于对象上,则返回其属性描述符对象(property descriptor),否则返回 undefined

例子

var o, d;o = { get foo() { return 17; } };
d = Object.getOwnPropertyDescriptor(o, "foo");
// d {//   configurable: true,
//   enumerable: true,
//   get: /*the getter function*/,
//   set: undefined
// }o = { bar: 42 };
d = Object.getOwnPropertyDescriptor(o, "bar");
// d {//   configurable: true,
//   enumerable: true,
//   value: 42,
//   writable: true
// }o = {};
Object.defineProperty(o, "baz", {value: 8675309,writable: false,enumerable: false
});
d = Object.getOwnPropertyDescriptor(o, "baz");
// d {//   value: 8675309,
//   writable: false,
//   enumerable: false,
//   configurable: false
// }

Object.getOwnPropertyDescriptors()

Object.getOwnPropertyDescriptors() 方法用来获取一个对象的所有自身属性的描述符。

语法

Object.getOwnPropertyDescriptors(obj)

参数

  • obj

    任意对象

返回值

  • 所指定对象的所有自身属性的描述符,如果没有任何自身属性,则返回空对象。

例子

浅拷贝一个对象

Object.assign() 方法只能拷贝源对象的可枚举的自身属性,同时拷贝时无法拷贝属性的特性们,而且访问器属性会被转换成数据属性,也无法拷贝源对象的原型,该方法配合 Object.create() 方法可以实现上面说的这些。

Object.create(Object.getPrototypeOf(obj),Object.getOwnPropertyDescriptors(obj)
);

创建子类

创建子类的典型方法是定义子类,将其原型设置为超类的实例,然后在该实例上定义属性。这么写很不优雅,特别是对于 getters 和 setter 而言。 相反,您可以使用此代码设置原型:

function superclass() {}
superclass.prototype = {// 在这里定义方法和属性
};
function subclass() {}
subclass.prototype = Object.create(superclass.prototype, Object.getOwnPropertyDescriptors({// 在这里定义方法和属性
}));

Object.getOwnPropertyNames()

Object.getOwnPropertyNames()方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。

语法

Object.getOwnPropertyNames(obj)

参数

  • obj

    一个对象,其自身的可枚举和不可枚举属性的名称被返回。

返回值

  • 在给定对象上找到的自身属性对应的字符串数组。

例子

使用 Object.getOwnPropertyNames()

var arr = ["a", "b", "c"];
console.log(Object.getOwnPropertyNames(arr).sort()); // ["0", "1", "2", "length"]// 类数组对象
var obj = { 0: "a", 1: "b", 2: "c"};
console.log(Object.getOwnPropertyNames(obj).sort()); // ["0", "1", "2"]// 使用Array.forEach输出属性名和属性值
Object.getOwnPropertyNames(obj).forEach(function(val, idx, array) {console.log(val + " -> " + obj[val]);
});
// 输出
// 0 -> a
// 1 -> b
// 2 -> c//不可枚举属性
var my_obj = Object.create({}, {getFoo: {value: function() { return this.foo; },enumerable: false}
});
my_obj.foo = 1;console.log(Object.getOwnPropertyNames(my_obj).sort()); // ["foo", "getFoo"]

如果你只要获取到可枚举属性,查看Object.keys或用for...in循环(还会获取到原型链上的可枚举属性,不过可以使用hasOwnProperty()方法过滤掉)。

下面的例子演示了该方法不会获取到原型链上的属性:

function ParentClass() {}
ParentClass.prototype.inheritedMethod = function() {};function ChildClass() {this.prop = 5;this.method = function() {};
}ChildClass.prototype = new ParentClass;
ChildClass.prototype.prototypeMethod = function() {};console.log(Object.getOwnPropertyNames(new ChildClass()  // ["prop", "method"])
);

只获取不可枚举的属性

下面的例子使用了 Array.prototype.filter() 方法,从所有的属性名数组(使用Object.getOwnPropertyNames()方法获得)中去除可枚举的属性(使用Object.keys()方法获得),剩余的属性便是不可枚举的属性了:

var target = myObject;
var enum_and_nonenum = Object.getOwnPropertyNames(target);
var enum_only = Object.keys(target);
var nonenum_only = enum_and_nonenum.filter(function(key) {var indexInEnum = enum_only.indexOf(key);if (indexInEnum == -1) {// 没有发现在enum_only健集中意味着这个健是不可枚举的,// 因此返回true 以便让它保持在过滤结果中return true;} else {return false;}
});console.log(nonenum_only);
注:Array.filter(filt_func)方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。

Object.getOwnPropertySymbols()

Object.getOwnPropertySymbols() 方法返回一个给定对象自身的所有 Symbol 属性的数组。

语法

Object.getOwnPropertySymbols(obj)

参数

  • obj

    要返回 Symbol 属性的对象。

返回值

  • 在给定对象自身上找到的所有 Symbol 属性的数组。

例子

var obj = {};
var a = Symbol("a");
var b = Symbol.for("b");obj[a] = "localSymbol";
obj[b] = "globalSymbol";var objectSymbols = Object.getOwnPropertySymbols(obj);console.log(objectSymbols.length); // 2
console.log(objectSymbols)         // [Symbol(a), Symbol(b)]
console.log(objectSymbols[0])      // Symbol(a)

Object.getPrototypeOf()

Object.getPrototypeOf() 方法返回指定对象的原型(内部[[Prototype]]属性的值)。

语法

Object.getPrototypeOf(object)

参数

  • obj

    要返回其原型的对象。

返回值

  • 给定对象的原型。如果没有继承属性,则返回 null

例子

const prototype1 = {};
const object1 = Object.create(prototype1);console.log(Object.getPrototypeOf(object1) === prototype1);
// expected output: true

参考地址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object

JavaScript中Object对象方法超详细讲解举例说明仅此一篇相关推荐

  1. JavaScript中Object对象深度遍历

    Object对象深度遍历 支持Object和Array混合型对象遍历.其中用到的对象类型判断方法,详见<JavaScript中Object对象类型判断> // 递归实现 // obj 为父 ...

  2. finalize java,Java中Object对象finalize方法详细解析

    简书:capo 转载请注明原创出处,谢谢! 前言: 今天我们来看看Object中一个经常被人遗忘的方法,finalize方法.老规矩,我们先看看Javadoc是怎样描述这个方法的 /** * Call ...

  3. 如何在Javascript中访问对象的第一个属性?

    本文翻译自:How to access the first property of an object in Javascript? Is there an elegant way to access ...

  4. Javascript中的对象查找【转】

    编辑点评:本文作者为大家介绍Javascript中的对象查找一些问题,希望有所帮助. 近期群里常有人提一些简单的问题,比如发一段代码乱七八糟的代码,然后说里面某个变量是什么,比如这里就有个很好的例子: ...

  5. JavaScript 中的对象拷贝(深拷贝、浅拷贝)

    对象是 JavaScript 的基本块.对象是属性的集合,属性是键值对.JavaScript 中的几乎所有对象都是位于原型链顶部 Object 的实例. 介绍 如你所知,赋值运算符不会创建一个对象的副 ...

  6. 对象删除某个属性_充分了解JavaScript中【对象】的概念(二)

    点击上方「蓝字」关注我们 之前的文章: 充分了解JavaScript中[对象]的概念(一) 这篇文章我们继续来讲解JavaScript中[对象]的概念,因为这是一系列的文章,所以建议从第一篇文章开始看 ...

  7. jquery 遍历java对象_jquery中object对象循环遍历的方法

    一个朋友问对象如何转为数组,当我问他为啥要转得时候,他告诉我,数组可以用js循环遍历,而对象则不可以.其实呢,对象同样可以循环遍历的啊.不用转换也可以循环!说明你对js或者jquery的某些操作不是很 ...

  8. JavaScript中的对象

    什么是对象 现实生活中:万物皆对象,对象是一个具体的事物,一个具体的事物就会有行为和特征. 举例: 一部车,一个手机 车是一类事物,门口停的那辆车才是对象     特征:红色.四个轮子     行为: ...

  9. 100个python算法超详细讲解:抢30游戏

    [100个python算法超详细讲解]@谷歌学术 1.问题描述 由两个人玩"抢30"游戏,游戏规则是:第一个人先说"1"或"1,2",第 二 ...

最新文章

  1. 图解Spring解决循环依赖
  2. linux安装python3命令-linux系统下安装python3及其配置
  3. 关于资产发现-嗅探法
  4. Swing组件集合的事件处理(二)
  5. P1476 休息中的小呆
  6. mysql快速导入5000万条数据过程记录(LOAD DATA INFILE方式)
  7. Linux系统下如何配置SSH?如何开启SSH?
  8. Linux 创建和销毁 urb
  9. 多态与异常处理——动手动脑
  10. 大智慧加密指标源码恢复,指标破解工具
  11. 蓝牙配对连接HCI log学习
  12. twitter关注排行榜
  13. 常见的文件名后缀及用法
  14. 高斯消元法原理及模板
  15. 分子动力学(二)-成键相互作用
  16. 有的项目是没有seting ,.project文件的,import时not project found处理办法
  17. HSA人血清白蛋白修饰纳米金球金棒
  18. 联通沃音乐发布283万元大数据项目采购需求
  19. 用Matlab提取图片中泰文,利用Matlab提取图片中的数据
  20. cPanel在手,建站无忧

热门文章

  1. openstack 安装并验证 Nova( 计算节点 + 控制节点)
  2. pip install skimage安装skimage库出错问题
  3. ElasticSearch倒排索引详解
  4. HTML中粗体strong与b,斜体em与i标签的区别
  5. jquery 动态为ul添加li
  6. Cookie、Session、Token和JWT
  7. PageHelper在springboot中的使用
  8. PageHelper详解
  9. 人脸检测:MTCNN
  10. Android APK打包加固 以及上传审核流程和APP上线10多家开发者平台地址