Home PC Games Linux Windows Database Network Programming Server Mobile  
  Home \ Programming \ JavaScript prototype and prototype chain and project combat     - About Java 7 module system (Programming)

- Java in the final qualifier (Programming)

- Linux console password solution (Programming)

- How to use the ftp tool to transfer files between Windows and Linux (Linux)

- Python control multi-process and multi-threaded concurrency (Programming)

- Install Web-based monitoring tool: Linux-Dash (Server)

- How to use Git to upload code to GitHub project (Linux)

- JavaScript file loader LABjs API Explanation (Programming)

- Get basic information about Linux server script (Server)

- Hadoop 2.2.0 installation development environment (standalone pseudo-distributed mode) (Server)

- Teamviewer not start in Linux (Linux)

- Docker improve safety (Server)

- ThinkPad X220 Ubuntu 14.10 installed on fingerprint recognition (Linux)

- To explore the caching mechanism for Android ListView (Programming)

- How to install with JSON support in Ubuntu 15.04 SQLite 3.9.1 (Database)

- Batch download files using the explorer under Windows Server 2008 R2 (Server)

- Use mysqldump backup performed MariaDB (Database)

- 24 Docker recommendations (Linux)

- Linux System Administrator Network Security Experience (Linux)

- Ubuntu clean up unnecessary disk space usage (Linux)

  JavaScript prototype and prototype chain and project combat
  Add Date : 2018-11-21      
  1. Basic Concepts
1.1 Prototype
Each function has a prototype (prototype) property that is a pointer to an object, and the object is to use all the forces of the class that contains the shared properties and methods.

No prototype way:

// Decimal point, tax rate

var decimalDigits = 2,

tax = 5;

function add (x, y) {

    return x + y;


function subtract (x, y) {

    return x - y;


// Alert (add (1, 3));

The first way:

var Calculator = function (decimalDigits, tax) {

    this.decimalDigits = decimalDigits;

    this.tax = tax;



Calculator.prototype = {

    add: function (x, y) {

        return x + y;



    subtract: function (x, y) {

        return x - y;



// Alert ((new Calculator ()) add (1, 3).);

The second way:

Calculator.prototype = function () {} ();

Calculator.prototype = function () {

    add = function (x, y) {

        return x + y;



    subtract = function (x, y) {

        return x - y;


    return {

        add: add,

        subtract: subtract


} ();


// Alert ((new Calculator ()) add (11, 3).);

Of course, we can also step declaration

var BaseCalculator = function () {

    // Declare a number of decimal places for each instance

    this.decimalDigits = 2;


// Prototype to BaseCalculator extended two object methods

BaseCalculator.prototype.add = function (x, y) {

    return x + y;



BaseCalculator.prototype.subtract = function (x, y) {

    return x - y;


1.2 prototype chain

ECMAScript describes the concept of the prototype chain, and the prototype chain as the main method of implementation inheritance. The basic idea is to use the prototype to make a reference type inherits from another type of reference properties and methods. A brief review of the relationship between the constructor and prototype instance: Each constructor function has a prototype object, the prototype object contains a pointer to a pointer to the constructor, and contains a pointer to the actual prototype object's internal pointer. So if we make a prototype object is equal to another instance of the type, what will happen then? Obviously, at this time the prototype object will contain a pointer to a pointer to another prototype, correspondingly, another prototype also includes a pointer to a pointer to another constructor. If the prototype is another instance of another type, the above relationship is still valid, so progressive layers, and constitutes an example of the prototype chain. This is the basic concept of the so-called prototype chain.

function SuperType () {

  this.property = true;


SuperType.prototype.getSuperValue = function () {

  return this.property;


function SubType () {

  this.subproperty = false;


SubType.prototype = newSuperType ();

SubType.prototype.getSubValue = function () {

  return this.subproperty;


var instance = new SubType ();

alert (instance.getSuperValue ()); // true

2. The project combat
Roadside assistance in the project, when the operator every step of the operation carried out, must be recorded in the log table inside the case, to allow administrators to clearly see the operation process every step of the operation, in order not to repeat the development, need to make a case record tools JS: CaseLogUtil.js

Wherein, when we want to call this method when instantiated directly CaseLog, call its methods to log.

Example: var test = new CaseLog ( "11", "content");

      test.log ();
- Hazelcast integration with MongoDB (Database)
- How to Create a file can not be changed under Linux (Linux)
- Linux Samba server-side structures and the use of the client (Server)
- linux server security (Linux)
- How to import JNI resulting .so libraries in Android Studio (Programming)
- Nginx multi-domain certificate HTTPS (Server)
- Installation under Linux Mint system guidelines for Gtk (Linux)
- Puppet installation and testing (Server)
- Linux startup and logon security settings (Linux)
- Use Epoll develop high-performance application server on Linux (Server)
- Use top to monitor the remote server (Server)
- How to Install Sticky Notes on Ubuntu and Derivatives (Linux)
- CentOS 6.5 opens the Xmanager Remote Desktop login (Linux)
- Ubuntu achieve initialization iptables (Linux)
- Redis data types Introduction (Database)
- Java source implementation of the observer pattern instance (Programming)
- Docker manage data (Linux)
- Ceph distributed storage system is installed on a CentOS 7.1 (Server)
- Oracle bdump file soaring (Database)
- MySQL 5.7.10 source code for the latest version of the installation process in detail (Database)
  CopyRight 2002-2022 newfreesoft.com, All Rights Reserved.