Expanding the prototype attribute of constructor is a very powerful method to add features, but sometimes it is too powerful
Expanding the prototype attribute of constructor is a very powerful method to add features, but sometimes it is too powerful.
Adding built-in constructor prototypes (such as Object (), Array (), or Function () is attractive, but this seriously reduces maintainability, it makes your code unpredictable. Other developers who use your code are more likely to use the built-in JavaScript method for continuous work than the method you add.
In addition, attributes added to the prototype may be displayed in the loop when the hasOwnProperty attribute is not used, which may cause confusion.
Therefore, it is best not to add a built-in prototype. You can specify a rule, except when the current conditions are met:
- It is expected that this function will be implemented as a built-in method in future ECMAScript or JavaScript implementations. For example, you can add the method described in ECMAScript 5 until all browsers catch up. In this case, you just defined the useful methods in advance.
- If you check that your custom property or method does not exist, it may have been implemented elsewhere in the code or it is already part of the browser JavaScript Engine that you support.
- You have clearly documented and communicated with the team about the changes.
If the three conditions are met, you can add the prototype as follows:
If (typeof Object. protoype. myMethod! = "Function") {Object. protoype. myMethod = function () {// implementation ...};}Additional reading
The topic list of this article is as follows:
- How should we understand the working principle of the JavaScript engine?
- JavaScript exploration: the importance of writing maintainable code
- JavaScript exploration: exercise caution when using global variables
- JavaScript exploration: var pre-parsing and side effects
- JavaScript exploration: for Loop (for Loops)
- JavaScript exploration: for-in loop (for-in Loops)
- Exploring JavaScript: Prototypes is too powerful
- JavaScript: eval () is the devil"
- JavaScript exploration: Using parseInt () for Numerical Conversion
- Exploring JavaScript: Basic coding specifications
- JavaScript exploration: function declaration and function expression
- JavaScript exploration: Name function expressions
- JavaScript: function name in the debugger
- JavaScript: JScript Bug
- JavaScript exploration: Memory Management of JScript
- Exploring JavaScript: SpiderMonkey's quirks
- JavaScript exploration: an alternative solution to naming function expressions
- JavaScript exploration: Object
- JavaScript exploration: Prototype chain
- JavaScript exploration: Constructor
- JavaScript probing: executable context Stack
- Execution context 1: Variable object and activity object
- Execution context 2: Scope chain Scope Chains
- Execution context 3: Closure Closures
- Execution context 4: This pointer
- Exploring JavaScript: Powerful prototype and prototype chain
- JavaScript Functions 1: function declaration
- JavaScript function 2: function expressions
- JavaScript function 3: function expressions in a group
- JavaScript function 4: function Constructor
- JavaScript variable object 1: VO Declaration
- JavaScript variable object 2: VO in different execution contexts
- JavaScript variable object 3: two stages of execution Context
- JavaScript variable object IV: Variables
- Property of the JavaScript variable object __parent _
- JavaScript scope chain 1: Scope chain Definition
- JavaScript scope chain 2: function Lifecycle
- JavaScript scope chain 3: Scope chain features
- JavaScript closure 1: Introduction to closures
- JavaScript closure 2: Implementation of closure
- JavaScript closure 3: Closure usage
This article is available at http://www.nowamagic.net/librarys/veda/detail/1626.