Javascript is required: face object programming

Source: Internet
Author: User

Javascript is required: face object programming

Core concepts of face object programming technology:Encapsulation, inheritance, and PolymorphismIn some mainstream advanced programming languages, such as: C #, VB. NET, JAVA, PHP, and so on are easy to implement. If you want to implement face-to-face object programming in javascript, it is not so straightforward and easy, because javascript is not an object-oriented language, we can only simulate object-oriented programming through some features of javascript, such as closures and prototype chains, I think these are the foundations for mastering and using javascript flexibly. Many javascript experts in the garden have introduced and analyzed this aspect, I only design and develop WEB Front-end and backend independently as a project owner) to re-understand the main points of javascript object-oriented.

Since it is object-oriented, we first need to know how to create an object. The following lists several common methods for creating an object:

A. directly create an object instance:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

// Instantiate an object directly

var Person1 = { Name: "Dream On the Road", Age: 29, Sex: "Male", Height: 178 };

alert(Person1.Name);

var Person2 = new Object();

Person2.Name = "Dream On the Road";

Person2.Age = 29;

Person2.Sex = "Male";

Person2.Height = 178;

alert(Person2.Name);

// This is the abbreviation above

var Person3 = new Object({ Name: "Dream On the Road", Age: 29, Sex: "Male", Height: 178 });

alert(Person3.Name);

Advantage: directly create an object without defining the type in advance;

Disadvantage: it cannot be reused;

B. Define and instantiate the object:

1

2

3

4

5

6

7

8

9

10

// First define the class and then instance it into an object

function Person4(n,a,s,h) {

    this.Name = n;

    this.Age = a;

    this.Sex = s;

    this.Height = h;

}

var p4 = new Person4("Dream On the Road", 29, "Male", 178);

alert(p4.Age);

Advantages: constructor similar to object-oriented programming language is easy to understand, and multiple objects can be instantiated through the new Keyword after definition to achieve reuse.

Disadvantage: It must be defined before instantiation;

To sum up, we recommend that you use the B method to create objects.

Implement encapsulation, that is, only public methods and public attributes are exposed, and private methods and attributes are hidden)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

function Person5(n, a, s, h) {

    // Public attributes

    this.Name = n;

    this.Age = a;

    this.Sex = s;

    this.Height = h;

     

    // Public Method

    this.AfterYear = function (count) {

        updateAge(count);

        alert(_currentYear +", I already :" + this.Age +"Years old! ");

    };

    this.Say = function () {

        alert("My personal information --> Name :"+ this.Name+", Age: "+ this.Age +", Sex: "+ this.Sex +", Height:" + this.Height);

    }

    // Private attributes and Methods

    var _self = this;

    var _currentYear = 2015;

    function updateAge(count) {

        _currentYear += count;

        _self.Age += count;

    };

}

var p5 = new Person5("Dream On the Road", 29, "Male", 178);

p5.AfterYear(10);

p5.AfterYear(25);

Using prototype chain to implement inheritance, that is, an object contains all the public attributes and methods of another object. There are many methods to implement inheritance, I think it is more object-oriented to simulate inheritance in the following form:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

function SoftEngineer(n, a, s, h, lang) {

    Person5.call(this, n, a, s, h);// Include all attributes and methods of Person5 in SoftEngineer to implement inheritance

    this.Lang = lang;

    this.SayCode = function () {

        alert("I am a software engineer, I will" + this.Lang + "Programming language! ");

    }

    this.Working = function () { };// Empty method, similar to virtual method in Object-Oriented

}

SoftEngineer.prototype = new Person5(); // Specify the prototype of SoftEngineer to the Person5 instance

var softengr = new SoftEngineer("Dream On the Road", 29, "Male", 178, "javascript");

softengr.Say();

softengr.SayCode();

The prototype chain is used to implement polymorphism, that is, signatures based on the same method are displayed in different subclasses in different forms:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

function WebSoftEngineer(n, a, s, h, lang) {

    SoftEngineer.apply(this, [n, a, s, h, lang]);

    this.Working = function () {

        alert("I am a web engineer and I am engaged in webpage development and design! ");

    };

};

WebSoftEngineer.prototype = new SoftEngineer();

function AppSoftEngineer(n, a, s, h, lang) {

    SoftEngineer.apply(this, [n, a, s, h, lang]);

    this.Working = function () {

        alert("I am an application engineer and I am engaged in client application development and design! ");

    };

};

AppSoftEngineer.prototype = new SoftEngineer();

var webengr = new WebSoftEngineer("Dream On the Road", 29, "Male", 178, "javascript");

webengr.Say();

webengr.Working();

var appengr = new AppSoftEngineer("Dream On the Road", 29, "Male", 178, "c#");

appengr.Say();

appengr.Working();

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.