面向对象的JavaScript-005-Function.prototype.call()的3种作用

1.

1 // call的3种作用
 2     // 1.Using call to chain constructors for an object
 3     function Product(name, price) {
 4       this.name = name;
 5       this.price = price;
 6
 7       if (price < 0) {
 8         throw RangeError('Cannot create product ' +
 9                           this.name + ' with a negative price');
10       }
11     }
12
13     function Food(name, price) {
14       Product.call(this, name, price);
15       this.category = 'food';
16     }
17
18     function Toy(name, price) {
19       Product.call(this, name, price);
20       this.category = 'toy';
21     }
22
23     var cheese = new Food('feta', 5);
24     console.log(cheese);
25     var fun = new Toy('robot', 40);
26     console.log(fun);
27
28     // 2.Using call to invoke an anonymous function
29     var animals = [
30       { species: 'Lion', name: 'King' },
31       { species: 'Whale', name: 'Fail' }
32     ];
33
34     for (var i = 0; i < animals.length; i++) {
35       (function(i) {
36         this.print = function() {
37           console.log('#' + i + ' ' + this.species
38                       + ': ' + this.name);
39         }
40         this.print();
41       }).call(animals[i], i);
42     }
43
44     // Using call to invoke a function and specifying the context for 'this'
45     // In below example, when we will call greet the value of this will be bind to object i.

46     function greet() {
47       var reply = [this.person, 'Is An Awesome', this.role].join(' ');
48       console.log(reply);
49     }
50
51     var i = {
52       person: 'Douglas Crockford', role: 'Javascript Developer'
53     };
54
55     greet.call(i); // Douglas Crockford Is An Awesome Javascript Developer

面向对象的JavaScript-005-Function.prototype.call()的3种作用

You can do anything you set your mind to, man!

Original: https://www.cnblogs.com/shamgod/p/5523504.html
Author: shamgod
Title: 面向对象的JavaScript-005-Function.prototype.call()的3种作用

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/536417/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球