JavaScript Object 构造函数方法

野性酷女 2022-11-16 13:52 210阅读 0赞

(1)Object.assign()

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

语法

  1. Object.assign(target, ...sources)

参数

  • target 目标对象
  • sources 源对象

示例:复制一个对象

  1. const obj = { a: 1 };
  2. const copy = Object.assign({ }, obj);
  3. console.log(copy); // { a: 1 }

(2)Object.create()

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

语法

  1. Object.create(proto,[propertiesObject])

参数

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

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

示例:用 Object.create 实现类式继承

  1. // Shape - 父类(superclass)
  2. function Shape() {
  3. this.x = 0;
  4. this.y = 0;
  5. }
  6. // 父类的方法
  7. Shape.prototype.move = function(x, y) {
  8. this.x += x;
  9. this.y += y;
  10. console.info('Shape moved.');
  11. };
  12. // Rectangle - 子类(subclass)
  13. function Rectangle() {
  14. Shape.call(this); // call super constructor.
  15. }
  16. // 子类续承父类
  17. Rectangle.prototype = Object.create(Shape.prototype);
  18. Rectangle.prototype.constructor = Rectangle;
  19. var rect = new Rectangle();
  20. console.log('Is rect an instance of Rectangle?',
  21. rect instanceof Rectangle); // true
  22. console.log('Is rect an instance of Shape?',
  23. rect instanceof Shape); // true
  24. rect.move(1, 1); // Outputs, 'Shape moved.'

(3)Object.defineProperty()

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

语法

  1. Object.defineProperty(obj, prop, descriptor)

参数

  • obj 要定义属性的对象。
  • prop 要定义或修改的属性的名称或 Symbol
  • descriptor 要定义或修改的属性描述符。

返回值
被传递给函数的对象。

示例:创建属性

如果对象中不存在指定的属性,Object.defineProperty() 会创建这个属性。当描述符中省略某些字段时,这些字段将使用它们的默认值。

  1. var o = { }; // 创建一个新对象
  2. // 在对象中添加一个属性与数据描述符的示例
  3. Object.defineProperty(o, "a", {
  4. value : 37,
  5. writable : true,
  6. enumerable : true,
  7. configurable : true
  8. });
  9. // 对象 o 拥有了属性 a,值为 37
  10. // 在对象中添加一个设置了存取描述符属性的示例
  11. var bValue = 38;
  12. Object.defineProperty(o, "b", {
  13. // 使用了方法名称缩写(ES2015 特性)
  14. // 下面两个缩写等价于:
  15. // get : function() { return bValue; },
  16. // set : function(newValue) { bValue = newValue; },
  17. get() { return bValue; },
  18. set(newValue) { bValue = newValue; },
  19. enumerable : true,
  20. configurable : true
  21. });
  22. o.b; // 38
  23. // 对象 o 拥有了属性 b,值为 38
  24. // 现在,除非重新定义 o.b,o.b 的值总是与 bValue 相同
  25. // 数据描述符和存取描述符不能混合使用
  26. Object.defineProperty(o, "conflict", {
  27. value: 0x9f91102,
  28. get() { return 0xdeadbeef; }
  29. });
  30. // 抛出错误 TypeError: value appears only in data descriptors, get appears only in accessor descriptors

(4)Object.defineProperties()

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

语法

  1. Object.defineProperties(obj, props)

参数

  • obj 在其上定义或修改属性的对象。
  • props 要定义其可枚举属性或修改的属性描述符的对象。对象中存在的属性描述符主要有两种:数据描述符和访问器描述符。

返回值
传递给函数的对象。

示例

Object.defineProperties 本质上定义了obj 对象上props的可枚举属性相对应的所有属性。

  1. var obj = { };
  2. Object.defineProperties(obj, {
  3. 'property1': {
  4. value: true,
  5. writable: true
  6. },
  7. 'property2': {
  8. value: 'Hello',
  9. writable: false
  10. }
  11. // etc. etc.
  12. });

(5)Object.entries()

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

语法

  1. Object.entries(obj)

参数

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

返回值
给定对象自身可枚举属性的键值对数组。

示例

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

(6)Object.freeze()

Object.freeze() 方法可以冻结一个对象。一个被冻结的对象再也不能被修改;freeze() 返回和传入的参数相同的对象。

语法

  1. Object.freeze(obj)

参数

  • obj 要被冻结的对象。

返回值
被冻结的对象。

示例:冻结对象

  1. var obj = {
  2. prop: function() { },
  3. foo: 'bar'
  4. };
  5. // 新的属性会被添加, 已存在的属性可能
  6. // 会被修改或移除
  7. obj.foo = 'baz';
  8. obj.lumpy = 'woof';
  9. delete obj.prop;
  10. // 作为参数传递的对象与返回的对象都被冻结
  11. // 所以不必保存返回的对象(因为两个对象全等)
  12. var o = Object.freeze(obj);
  13. o === obj; // true
  14. Object.isFrozen(obj); // === true
  15. // 现在任何改变都会失效
  16. obj.foo = 'quux'; // 静默地不做任何事
  17. // 静默地不添加此属性
  18. obj.quaxxor = 'the friendly duck';
  19. // 在严格模式,如此行为将抛出 TypeErrors
  20. function fail(){
  21. 'use strict';
  22. obj.foo = 'sparky'; // throws a TypeError
  23. delete obj.quaxxor; // 返回true,因为quaxxor属性从来未被添加
  24. obj.sparky = 'arf'; // throws a TypeError
  25. }
  26. fail();
  27. // 试图通过 Object.defineProperty 更改属性
  28. // 下面两个语句都会抛出 TypeError.
  29. Object.defineProperty(obj, 'ohai', { value: 17 });
  30. Object.defineProperty(obj, 'foo', { value: 'eit' });
  31. // 也不能更改原型
  32. // 下面两个语句都会抛出 TypeError.
  33. Object.setPrototypeOf(obj, { x: 20 })
  34. obj.__proto__ = { x: 20 }

(7)Object.getOwnPropertyDescriptor()

Object.getOwnPropertyDescriptor() 方法返回指定对象上一个自有属性对应的属性描述符。

语法

  1. Object.getOwnPropertyDescriptor(obj, prop)

参数

  • obj 需要查找的目标对象。
  • prop 目标对象内属性名称。

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

示例

  1. var o, d;
  2. o = { get foo() { return 17; } };
  3. d = Object.getOwnPropertyDescriptor(o, "foo");
  4. // d {
  5. // configurable: true,
  6. // enumerable: true,
  7. // get: /*the getter function*/,
  8. // set: undefined
  9. // }
  10. o = { bar: 42 };
  11. d = Object.getOwnPropertyDescriptor(o, "bar");
  12. // d {
  13. // configurable: true,
  14. // enumerable: true,
  15. // value: 42,
  16. // writable: true
  17. // }
  18. o = { };
  19. Object.defineProperty(o, "baz", {
  20. value: 8675309,
  21. writable: false,
  22. enumerable: false
  23. });
  24. d = Object.getOwnPropertyDescriptor(o, "baz");
  25. // d {
  26. // value: 8675309,
  27. // writable: false,
  28. // enumerable: false,
  29. // configurable: false
  30. // }

(8)Object.getOwnPropertyNames()

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

语法

  1. Object.getOwnPropertyNames(obj)

参数

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

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

示例

  1. var arr = ["a", "b", "c"];
  2. console.log(Object.getOwnPropertyNames(arr).sort()); // ["0", "1", "2", "length"]
  3. // 类数组对象
  4. var obj = { 0: "a", 1: "b", 2: "c"};
  5. console.log(Object.getOwnPropertyNames(obj).sort()); // ["0", "1", "2"]
  6. // 使用Array.forEach输出属性名和属性值
  7. Object.getOwnPropertyNames(obj).forEach(function(val, idx, array) {
  8. console.log(val + " -> " + obj[val]);
  9. });
  10. // 输出
  11. // 0 -> a
  12. // 1 -> b
  13. // 2 -> c
  14. //不可枚举属性
  15. var my_obj = Object.create({ }, {
  16. getFoo: {
  17. value: function() { return this.foo; },
  18. enumerable: false
  19. }
  20. });
  21. my_obj.foo = 1;
  22. console.log(Object.getOwnPropertyNames(my_obj).sort()); // ["foo", "getFoo"]

(9)Object.getOwnPropertySymbols()

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

语法

  1. Object.getOwnPropertySymbols(obj)

参数

  • obj 要返回 Symbol 属性的对象。

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

示例

  1. var obj = { };
  2. var a = Symbol("a");
  3. var b = Symbol.for("b");
  4. obj[a] = "localSymbol";
  5. obj[b] = "globalSymbol";
  6. var objectSymbols = Object.getOwnPropertySymbols(obj);
  7. console.log(objectSymbols.length); // 2
  8. console.log(objectSymbols) // [Symbol(a), Symbol(b)]
  9. console.log(objectSymbols[0]) // Symbol(a)

(10)Object.getPrototypeOf()

Object.getPrototypeOf() 方法返回指定对象的原型。

语法

  1. Object.getPrototypeOf(object)

参数

  • obj 要返回其原型的对象。

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

示例

  1. var proto = { };
  2. var obj = Object.create(proto);
  3. Object.getPrototypeOf(obj) === proto; // true
  4. var reg = /a/;
  5. Object.getPrototypeOf(reg) === RegExp.prototype; // true

(11)Object.is()

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

语法

  1. Object.is(value1, value2);

参数

  • value1 被比较的第一个值。
  • value2 被比较的第二个值。

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

示例

  1. if (!Object.is) {
  2. Object.is = function(x, y) {
  3. // SameValue algorithm
  4. if (x === y) { // Steps 1-5, 7-10
  5. // Steps 6.b-6.e: +0 != -0
  6. return x !== 0 || 1 / x === 1 / y;
  7. } else {
  8. // Step 6.a: NaN == NaN
  9. return x !== x && y !== y;
  10. }
  11. };
  12. }

(12)Object.isExtensible()

Object.isExtensible() 方法判断一个对象是否是可扩展的(是否可以在它上面添加新的属性)。

语法

  1. Object.isExtensible(obj)

参数

  • obj 需要检测的对象

返回值
表示给定对象是否可扩展的一个Boolean

示例

  1. // 新对象默认是可扩展的.
  2. var empty = { };
  3. Object.isExtensible(empty); // === true
  4. // ...可以变的不可扩展.
  5. Object.preventExtensions(empty);
  6. Object.isExtensible(empty); // === false
  7. // 密封对象是不可扩展的.
  8. var sealed = Object.seal({ });
  9. Object.isExtensible(sealed); // === false
  10. // 冻结对象也是不可扩展.
  11. var frozen = Object.freeze({ });
  12. Object.isExtensible(frozen); // === false

(13)Object.isFrozen()
Object.isFrozen()方法判断一个对象是否被冻结。

语法

  1. Object.isFrozen(obj)

参数

  • obj 被检测的对象。

返回值
表示给定对象是否被冻结的Boolean

示例

  1. // 一个对象默认是可扩展的,所以它也是非冻结的.
  2. Object.isFrozen({ }); // === false
  3. // 一个不可扩展的空对象同时也是一个冻结对象.
  4. var vacuouslyFrozen = Object.preventExtensions({ });
  5. Object.isFrozen(vacuouslyFrozen) //=== true;
  6. // 一个非空对象默认也是非冻结的.
  7. var oneProp = { p: 42 };
  8. Object.isFrozen(oneProp) //=== false
  9. // 让这个对象变的不可扩展,并不意味着这个对象变成了冻结对象,
  10. // 因为p属性仍然是可以配置的(而且可写的).
  11. Object.preventExtensions(oneProp);
  12. Object.isFrozen(oneProp) //=== false
  13. // 此时,如果删除了这个属性,则它会成为一个冻结对象.
  14. delete oneProp.p;
  15. Object.isFrozen(oneProp) //=== true
  16. // 一个不可扩展的对象,拥有一个不可写但可配置的属性,则它仍然是非冻结的.
  17. var nonWritable = { e: "plep" };
  18. Object.preventExtensions(nonWritable);
  19. Object.defineProperty(nonWritable, "e", { writable: false }); // 变得不可写
  20. Object.isFrozen(nonWritable) //=== false
  21. // 把这个属性改为不可配置,会让这个对象成为冻结对象.
  22. Object.defineProperty(nonWritable, "e", { configurable: false }); // 变得不可配置
  23. Object.isFrozen(nonWritable) //=== true
  24. // 一个不可扩展的对象,拥有一个不可配置但可写的属性,则它仍然是非冻结的.
  25. var nonConfigurable = { release: "the kraken!" };
  26. Object.preventExtensions(nonConfigurable);
  27. Object.defineProperty(nonConfigurable, "release", { configurable: false });
  28. Object.isFrozen(nonConfigurable) //=== false
  29. // 把这个属性改为不可写,会让这个对象成为冻结对象.
  30. Object.defineProperty(nonConfigurable, "release", { writable: false });
  31. Object.isFrozen(nonConfigurable) //=== true
  32. // 一个不可扩展的对象,值拥有一个访问器属性,则它仍然是非冻结的.
  33. var accessor = { get food() { return "yum"; } };
  34. Object.preventExtensions(accessor);
  35. Object.isFrozen(accessor) //=== false
  36. // ...但把这个属性改为不可配置,会让这个对象成为冻结对象.
  37. Object.defineProperty(accessor, "food", { configurable: false });
  38. Object.isFrozen(accessor) //=== true
  39. // 使用Object.freeze是冻结一个对象最方便的方法.
  40. var frozen = { 1: 81 };
  41. Object.isFrozen(frozen) //=== false
  42. Object.freeze(frozen);
  43. Object.isFrozen(frozen) //=== true
  44. // 一个冻结对象也是一个密封对象.
  45. Object.isSealed(frozen) //=== true
  46. // 当然,更是一个不可扩展的对象.
  47. Object.isExtensible(frozen) //=== false

(14)Object.isSealed()

Object.isSealed() 方法判断一个对象是否被密封。

语法

  1. Object.isSealed(obj)

参数

  • obj 要被检查的对象。

返回值
表示给定对象是否被密封的一个Boolean

示例

  1. // 新建的对象默认不是密封的.
  2. var empty = { };
  3. Object.isSealed(empty); // === false
  4. // 如果你把一个空对象变的不可扩展,则它同时也会变成个密封对象.
  5. Object.preventExtensions(empty);
  6. Object.isSealed(empty); // === true
  7. // 但如果这个对象不是空对象,则它不会变成密封对象,因为密封对象的所有自身属性必须是不可配置的.
  8. var hasProp = { fee: "fie foe fum" };
  9. Object.preventExtensions(hasProp);
  10. Object.isSealed(hasProp); // === false
  11. // 如果把这个属性变的不可配置,则这个属性也就成了密封对象.
  12. Object.defineProperty(hasProp, "fee", { configurable: false });
  13. Object.isSealed(hasProp); // === false
  14. Object.isSealed(hasProp.fee); // === true
  15. // 最简单的方法来生成一个密封对象,当然是使用Object.seal.
  16. var sealed = { };
  17. Object.seal(sealed);
  18. Object.isSealed(sealed); // === true
  19. // 一个密封对象同时也是不可扩展的.
  20. Object.isExtensible(sealed); // === false
  21. // 一个密封对象也可以是一个冻结对象,但不是必须的.
  22. Object.isFrozen(sealed); // === true ,所有的属性都是不可写的
  23. var s2 = Object.seal({ p: 3 });
  24. Object.isFrozen(s2); // === false, 属性"p"可写
  25. var s3 = Object.seal({ get p() { return 0; } });
  26. Object.isFrozen(s3); // === true ,访问器属性不考虑可写不可写,只考虑是否可配置

(15)Object.keys()

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

语法

  1. Object.keys(obj)

参数

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

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

示例

  1. // simple array
  2. var arr = ['a', 'b', 'c'];
  3. console.log(Object.keys(arr)); // console: ['0', '1', '2']
  4. // array like object
  5. var obj = { 0: 'a', 1: 'b', 2: 'c' };
  6. console.log(Object.keys(obj)); // console: ['0', '1', '2']
  7. // array like object with random key ordering
  8. var anObj = { 100: 'a', 2: 'b', 7: 'c' };
  9. console.log(Object.keys(anObj)); // console: ['2', '7', '100']
  10. // getFoo is a property which isn't enumerable
  11. var myObj = Object.create({ }, {
  12. getFoo: {
  13. value: function () { return this.foo; }
  14. }
  15. });
  16. myObj.foo = 1;
  17. console.log(Object.keys(myObj)); // console: ['foo']

(16)Object.preventExtensions()

Object.preventExtensions() 方法让一个对象变的不可扩展,也就是永远不能再添加新的属性。

语法

  1. Object.preventExtensions(obj)

参数

  • obj 将要变得不可扩展的对象。

返回值
已经不可扩展的对象。

示例

  1. // Object.preventExtensions将原对象变的不可扩展,并且返回原对象.
  2. var obj = { };
  3. var obj2 = Object.preventExtensions(obj);
  4. obj === obj2; // true
  5. // 字面量方式定义的对象默认是可扩展的.
  6. var empty = { };
  7. Object.isExtensible(empty) //=== true
  8. // ...但可以改变.
  9. Object.preventExtensions(empty);
  10. Object.isExtensible(empty) //=== false
  11. // 使用Object.defineProperty方法为一个不可扩展的对象添加新属性会抛出异常.
  12. var nonExtensible = { removable: true };
  13. Object.preventExtensions(nonExtensible);
  14. Object.defineProperty(nonExtensible, "new", { value: 8675309 }); // 抛出TypeError异常
  15. // 在严格模式中,为一个不可扩展对象的新属性赋值会抛出TypeError异常.
  16. function fail()
  17. {
  18. "use strict";
  19. nonExtensible.newProperty = "FAIL"; // throws a TypeError
  20. }
  21. fail();

(17)Object.seal()

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

语法

  1. Object.seal(obj)

参数

  • obj 将要被密封的对象。

返回值
被密封的对象。

示例

  1. var obj = {
  2. prop: function() { },
  3. foo: 'bar'
  4. };
  5. // 可以添加新的属性
  6. // 可以更改或删除现有的属性
  7. obj.foo = 'baz';
  8. obj.lumpy = 'woof';
  9. delete obj.prop;
  10. var o = Object.seal(obj);
  11. o === obj; // true
  12. Object.isSealed(obj); // === true
  13. // 仍然可以修改密封对象的属性值
  14. obj.foo = 'quux';
  15. // 但是你不能将属性重新定义成为访问器属性
  16. // 反之亦然
  17. Object.defineProperty(obj, 'foo', {
  18. get: function() { return 'g'; }
  19. }); // throws a TypeError
  20. // 除了属性值以外的任何变化,都会失败.
  21. obj.quaxxor = 'the friendly duck';
  22. // 添加属性将会失败
  23. delete obj.foo;
  24. // 删除属性将会失败
  25. // 在严格模式下,这样的尝试将会抛出错误
  26. function fail() {
  27. 'use strict';
  28. delete obj.foo; // throws a TypeError
  29. obj.sparky = 'arf'; // throws a TypeError
  30. }
  31. fail();
  32. // 通过Object.defineProperty添加属性将会报错
  33. Object.defineProperty(obj, 'ohai', {
  34. value: 17
  35. }); // throws a TypeError
  36. Object.defineProperty(obj, 'foo', {
  37. value: 'eit'
  38. }); // 通过Object.defineProperty修改属性值

(18)Object.setPrototypeOf()

Object.setPrototypeOf() 方法设置一个指定的对象的原型 ( 即, 内部[[Prototype]]属性)到另一个对象或 null

语法

  1. Object.setPrototypeOf(obj, prototype)

参数

  • obj 要设置其原型的对象。
  • prototype 该对象的新原型(一个对象 或 null)。

示例

  1. var dict = Object.setPrototypeOf({ }, null);

(19)Object.values()

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

语法

  1. Object.values(obj)

参数

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

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

示例

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

发表评论

表情:
评论列表 (有 0 条评论,210人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JavaScript构造函数

    JavaScript构造函数是一种特殊类型的函数,用于创建和初始化对象。它们通常用于定义自定义对象类型,以便在实例化对象时可以对其属性和方法进行初始化。构造函数通常以大写字母开

    相关 javascript(二)构造函数

    前一小节讲述的对象创建方法都有一个弱点,就是创建对象的代码是一次性的。如果我们想创建多个规划好的对象,有若干个固定的属性、方法,并能够初始化,就像 C++ 语言中的对象一样,J

    相关 java构造函数构造方法

    构造方法是类里的一个特殊的方法,他不能有返回值(包括void)。所谓构造方法,就是这个类在被实例化时(创建对象时)就要执行的方法,方法名为类的名字,一般的目的是为了给类进行一些