Home PC Games Linux Windows Database Network Programming Server Mobile  
  Home \ Programming \ JavaScript prototype and prototype chain and project combat     - GCC library link order problems (Programming)

- mysql_config_editor encryption and decryption of the new features of MySQL realization (Database)

- Bad name two variables (Linux)

- how to quickly find a file on Linux system (Linux)

- Repair after installing Ubuntu no boot device error (Linux)

- The security administrator network analysis tools SATAN Introduction under Linux (Linux)

- Running into the site-wide HTTPS (Server)

- How to install and use the Snort in Ubuntu 15.04 (Linux)

- Hackers is how the invasion and control of Things devices? (Linux)

- Using the Linux VNC service (Server)

- How to create SWAP files in Ubuntu 14.04 (Linux)

- How to manage the time and date at systemd Linux systems (Linux)

- Oracle database file path changes (Database)

- Linux operating system Start Tutorial: Xmanager Remote Access Linux graphical interface (Linux)

- Puppet Detailed centralized configuration management system (Server)

- Service manager OpenBSD on rccl (Server)

- To compile and install Clang 3.5.0 in Linux CentOS (Linux)

- Ganglia Python plug-in the process of writing notes (Linux)

- Java Annotation Comments (Programming)

- Shell scripts quickly deploy Tomcat project (Server)

  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 ();
- Linux System Getting Started Tutorial: How to update outdated version of Ubuntu (Linux)
- Linux Command - ps: a snapshot of the current process (Linux)
- Android Service Lifecycle and usage (Programming)
- Java Virtual Machine Basics (Programming)
- Tmux Crash Course: Tips and adjustment (Linux)
- Manage SQL Server services login (start) account and password (Database)
- Setting Wetty do not need an account login command line operations (Linux)
- How to use awk command in Linux (Linux)
- Ubuntu Install OpenSSL (Linux)
- Python control multi-process and multi-threaded concurrency (Programming)
- Using iptables achieve NAT (Linux)
- Linux Getting Started Tutorial: How to set up a static MAC address on VMware ESXi virtual machine (Mobile)
- Java method to read and write files summary (Programming)
- Terminal multiplexing tool tmux use (Linux)
- Android development, may cause a memory leak problem (Programming)
- ASM learning overview (Database)
- DRBD Principle and Features Overview (Server)
- A summary of Java multi-threaded programming - acquaintance multithreading (Programming)
- Linux Mint 17.2 64 bit installation Docker and management software seagull (Linux)
- MySQL performance view and configure finishing Daquan (Database)
  CopyRight 2002-2022 newfreesoft.com, All Rights Reserved.