Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:向对象类添加方法的优缺点是什么?_Javascript - Fatal编程技术网

Javascript:向对象类添加方法的优缺点是什么?

Javascript:向对象类添加方法的优缺点是什么?,javascript,Javascript,我见过一些人向对象类添加方法,如下所示: Object.clone = function() { } 该语法是否与任何其他函数名一样,只是带有句点,还是实际添加到对象类中?这与原型方法相同吗?这样做(或使用原型)与只进行函数克隆相比,有什么优点/缺点?无需向内置的对象添加静态函数。如果这样做,代码健壮性也会出现问题,因为某些当前和未来的环境可能会引入相同名称的内置方法,然后会出现名称冲突 只需将您的方法添加到您自己的对象中 无需向内置的对象构造函数添加静态函数。如果这样做,代码健壮性也会出现

我见过一些人向对象类添加方法,如下所示:

Object.clone = function() {

}

该语法是否与任何其他函数名一样,只是带有句点,还是实际添加到对象类中?这与原型方法相同吗?这样做(或使用原型)与只进行函数克隆相比,有什么优点/缺点?

无需向内置的
对象添加静态函数。如果这样做,代码健壮性也会出现问题,因为某些当前和未来的环境可能会引入相同名称的内置方法,然后会出现名称冲突


只需将您的方法添加到您自己的对象中

无需向内置的
对象
构造函数添加静态函数。如果这样做,代码健壮性也会出现问题,因为某些当前和未来的环境可能会引入相同名称的内置方法,然后会出现名称冲突


只需将您的方法添加到您自己的对象中

无需向内置的
对象
构造函数添加静态函数。如果这样做,代码健壮性也会出现问题,因为某些当前和未来的环境可能会引入相同名称的内置方法,然后会出现名称冲突


只需将您的方法添加到您自己的对象中

无需向内置的
对象
构造函数添加静态函数。如果这样做,代码健壮性也会出现问题,因为某些当前和未来的环境可能会引入相同名称的内置方法,然后会出现名称冲突


只需将您的方法添加到您自己的对象中

在JavaScript中,一切都是对象这意味着您可以将属性附加到任何对象,就像使用对象文字一样,例如:

var arr = [1,2,3];
arr.property = 'foo';
但在非对象上这样做不是一个好的做法

每个对象都有一个构造函数,因此数组有一个
数组
构造函数,对象有一个
对象
构造函数,等等。对象的
原型
是一个对象,其上下文是实例,当您使用
新建
实例化时,这会发生在自定义对象上

将方法附加到
原型时,该方法将在该对象的所有实例中共享。将函数附加到构造函数时,基本上是在命名空间下隐藏全局(取决于作用域);上下文不是实例,也不依赖于实例。您可以将这些函数视为静态方法

扩展
Object.prototype
很麻烦,因为这是“母对象”。扩展
对象
构造函数本身并没有那么糟糕,但不是最佳实践。最好的解决方案是创建自己的命名空间:

var MY = {};

MY.clone = function(){};

在JavaScript中,一切都是一个对象,这意味着您可以将属性附加到任何对象,就像使用对象文字一样,例如:

var arr = [1,2,3];
arr.property = 'foo';
但在非对象上这样做不是一个好的做法

每个对象都有一个构造函数,因此数组有一个
数组
构造函数,对象有一个
对象
构造函数,等等。对象的
原型
是一个对象,其上下文是实例,当您使用
新建
实例化时,这会发生在自定义对象上

将方法附加到
原型时,该方法将在该对象的所有实例中共享。将函数附加到构造函数时,基本上是在命名空间下隐藏全局(取决于作用域);上下文不是实例,也不依赖于实例。您可以将这些函数视为静态方法

扩展
Object.prototype
很麻烦,因为这是“母对象”。扩展
对象
构造函数本身并没有那么糟糕,但不是最佳实践。最好的解决方案是创建自己的命名空间:

var MY = {};

MY.clone = function(){};

在JavaScript中,一切都是一个对象,这意味着您可以将属性附加到任何对象,就像使用对象文字一样,例如:

var arr = [1,2,3];
arr.property = 'foo';
但在非对象上这样做不是一个好的做法

每个对象都有一个构造函数,因此数组有一个
数组
构造函数,对象有一个
对象
构造函数,等等。对象的
原型
是一个对象,其上下文是实例,当您使用
新建
实例化时,这会发生在自定义对象上

将方法附加到
原型时,该方法将在该对象的所有实例中共享。将函数附加到构造函数时,基本上是在命名空间下隐藏全局(取决于作用域);上下文不是实例,也不依赖于实例。您可以将这些函数视为静态方法

扩展
Object.prototype
很麻烦,因为这是“母对象”。扩展
对象
构造函数本身并没有那么糟糕,但不是最佳实践。最好的解决方案是创建自己的命名空间:

var MY = {};

MY.clone = function(){};

在JavaScript中,一切都是一个对象,这意味着您可以将属性附加到任何对象,就像使用对象文字一样,例如:

var arr = [1,2,3];
arr.property = 'foo';
但在非对象上这样做不是一个好的做法

每个对象都有一个构造函数,因此数组有一个
数组
构造函数,对象有一个
对象
构造函数,等等。对象的
原型
是一个对象,其上下文是实例,当您使用
新建
实例化时,这会发生在自定义对象上

将方法附加到
原型时,该方法将在该对象的所有实例中共享。将函数附加到构造函数时,基本上是在命名空间下隐藏全局(取决于作用域);上下文不是实例,也不依赖于实例。您可以将这些函数视为静态方法

扩展