คำถามติดแท็ก prototype

3
ความแตกต่างของขอบเขตมรดกต้นแบบ / ต้นแบบใน AngularJS คืออะไร?
อ้างอิง API หน้าขอบเขตพูดว่า: ขอบเขตสามารถสืบทอดจากขอบเขตพาเรนต์ ผู้พัฒนาคู่มือหน้าขอบเขตพูดว่า: ขอบเขต (ต้นแบบ) สืบทอดคุณสมบัติจากขอบเขตพาเรนต์ ดังนั้นขอบเขตของลูกจะสืบทอดต้นแบบจากขอบเขตหลักเสมอหรือไม่? มีข้อยกเว้นหรือไม่ เมื่อมันรับช่วงมันจะสืบทอดมรดกต้นแบบ JavaScript ปกติหรือไม่

29
__proto__ VS. ต้นแบบใน JavaScript
รูปนี้แสดงให้เห็นอีกครั้งว่าทุกวัตถุมีต้นแบบ ฟังก์ชั่นตัวสร้างฟูยังมีของตัวเอง__proto__ซึ่งเป็น Function.prototype และในทางกลับกันยังอ้างอิงผ่าน__proto__คุณสมบัติของมันอีกครั้งเพื่อ Object.prototype ดังนั้นซ้ำ Foo.prototype เป็นเพียงคุณสมบัติที่ชัดเจนของ Foo ซึ่งหมายถึงต้นแบบของวัตถุ b และ c var b = new Foo(20); var c = new Foo(30); อะไรคือความแตกต่างระหว่าง__proto__และprototype? รูปที่ถูกนำมาจากdmitrysoshnikov.com


10
ทำความเข้าใจกับความแตกต่างระหว่าง Object.create () และ SomeFunction ใหม่ ()
ฉันเพิ่งสะดุดกับObject.create()วิธีการใน JavaScript และฉันพยายามที่จะอนุมานว่ามันแตกต่างจากการสร้างตัวอย่างใหม่ของวัตถุด้วยnew SomeFunction()และเมื่อคุณต้องการใช้หนึ่งเหนืออื่น ๆ ลองพิจารณาตัวอย่างต่อไปนี้: var test = { val: 1, func: function() { return this.val; } }; var testA = Object.create(test); testA.val = 2; console.log(test.func()); // 1 console.log(testA.func()); // 2 console.log('other test'); var otherTest = function() { this.val = 1; this.func = function() { return this.val; }; }; …

13
แยกสตริง JSON ลงในต้นแบบวัตถุเฉพาะใน JavaScript
ฉันรู้วิธีแยกสตริง JSON และเปลี่ยนเป็นวัตถุ JavaScript คุณสามารถใช้JSON.parse()ในเบราว์เซอร์ที่ทันสมัย ​​(และ IE9 +) เยี่ยมมาก แต่ฉันจะนำวัตถุ JavaScript นั้นไปใช้และเปลี่ยนเป็นวัตถุ JavaScript ที่เฉพาะเจาะจง (เช่นกับต้นแบบที่แน่นอน) ได้อย่างไร ตัวอย่างเช่นสมมติว่าคุณมี: function Foo() { this.a = 3; this.b = 2; this.test = function() {return this.a*this.b;}; } var fooObj = new Foo(); alert(fooObj.test() ); //Prints 6 var fooJSON = JSON.parse({"a":4, "b": 3}); //Something to convert …

16
การขยายวัตถุใน Javascript
ขณะนี้ฉันกำลังเปลี่ยนจาก Java เป็น Javascript และเป็นเรื่องยากสำหรับฉันที่จะหาวิธีขยายวัตถุในแบบที่ฉันต้องการ ฉันเคยเห็นหลายคนบนอินเทอร์เน็ตใช้วิธีที่เรียกว่าขยายบนวัตถุ รหัสจะมีลักษณะดังนี้: var Person = { name : 'Blank', age : 22 } var Robot = Person.extend({ name : 'Robo', age : 4 )} var robot = new Robot(); alert(robot.name); //Should return 'Robo' ไม่มีใครรู้วิธีการทำงานนี้หรือไม่? ฉันได้ยินมาว่าคุณต้องเขียน Object.prototype.extend = function(...); แต่ฉันไม่รู้ว่าจะทำให้ระบบนี้ทำงานได้อย่างไร ถ้ามันเป็นไปไม่ได้โปรดแสดงอีกทางเลือกหนึ่งที่ขยายวัตถุ

8
เหตุใดการขยายวัตถุพื้นเมืองจึงเป็นการปฏิบัติที่ไม่ดี
ผู้นำความคิดเห็นของ JS ทุกคนกล่าวว่าการขยายวัตถุพื้นเมืองเป็นแนวทางปฏิบัติที่ไม่ดี แต่ทำไม? เราได้รับความนิยมหรือไม่? พวกเขากลัวว่าจะมีใครบางคนทำ "ผิดวิธี" และเพิ่มประเภทที่อธิบายได้เพื่อObjectทำลายลูปทั้งหมดบนวัตถุใด ๆ หรือไม่? ใช้TJ Holowaychuk 's should.jsตัวอย่างเช่น เขาเพิ่ม getter ง่ายไปObjectและทุกอย่างทำงานได้ดี ( แหล่งที่มา ) Object.defineProperty(Object.prototype, 'should', { set: function(){}, get: function(){ return new Assertion(Object(this).valueOf()); }, configurable: true }); สิ่งนี้สมเหตุสมผลจริงๆ ตัวอย่างเช่นเราสามารถขยายArrayได้ Array.defineProperty(Array.prototype, "remove", { set: function(){}, get: function(){ return removeArrayElement.bind(this); } }); var arr = …

7
Spring Java Config: คุณสร้าง @Bean ต้นแบบที่มีอาร์กิวเมนต์รันไทม์ได้อย่างไร
ด้วยการใช้ Java Config ของ Spring ฉันจำเป็นต้องได้รับ / สร้างอินสแตนซ์ถั่วที่กำหนดขอบเขตต้นแบบด้วยอาร์กิวเมนต์ตัวสร้างที่หาได้ในรันไทม์เท่านั้น พิจารณาตัวอย่างโค้ดต่อไปนี้ (ย่อให้สั้นลง): @Autowired private ApplicationContext appCtx; public void onRequest(Request request) { //request is already validated String name = request.getParameter("name"); Thing thing = appCtx.getBean(Thing.class, name); //System.out.println(thing.getName()); //prints name } โดยที่คลาส Thing ถูกกำหนดไว้ดังนี้: public class Thing { private final String name; @Autowired private SomeComponent …

17
การสืบทอด / ต้นแบบหลายรายการใน JavaScript
ฉันมาถึงจุดที่ฉันต้องมีการสืบทอดหลายขั้นพื้นฐานบางอย่างเกิดขึ้นใน JavaScript (ฉันไม่ได้มาที่นี่เพื่อพูดคุยว่านี่เป็นความคิดที่ดีหรือไม่ดังนั้นโปรดเก็บความคิดเห็นเหล่านั้นไว้กับตัวเอง) ฉันแค่อยากรู้ว่ามีใครพยายามทำสิ่งนี้ด้วยความสำเร็จ (หรือไม่) และพวกเขาไปถึงมันได้อย่างไร ในการต้มมันลงสิ่งที่ฉันต้องการจริงๆคือต้องสามารถมีวัตถุที่สามารถสืบทอดคุณสมบัติจากห่วงโซ่ต้นแบบมากกว่าหนึ่งชิ้น(กล่าวคือแต่ละต้นแบบอาจมีห่วงโซ่ที่เหมาะสมของตัวเอง) แต่ตามลำดับความสำคัญ (มันจะ ค้นหาโซ่ตามลำดับสำหรับคำจำกัดความแรก) เพื่อแสดงให้เห็นว่าสิ่งนี้เป็นไปได้อย่างไรในทางทฤษฎีสามารถทำได้โดยการติดโซ่รองเข้าที่ส่วนท้ายของห่วงโซ่หลัก แต่สิ่งนี้จะส่งผลต่ออินสแตนซ์ทั้งหมดของต้นแบบก่อนหน้านี้และนั่นไม่ใช่สิ่งที่ฉันต้องการ คิด?

14
วิธีการโทรโดยใช้ต้นแบบ JavaScript
เป็นไปได้หรือไม่ที่จะเรียกเมธอดพื้นฐานจากเมธอดต้นแบบใน JavaScript หากถูกลบล้าง MyClass = function(name){ this.name = name; this.do = function() { //do somthing } }; MyClass.prototype.do = function() { if (this.name === 'something') { //do something new } else { //CALL BASE METHOD } };

6
JavaScript: .extend และ .prototype ใช้สำหรับอะไร?
ฉันค่อนข้างใหม่กับ JavaScript และยังคงเห็น .extend และ .prototype ในไลบรารีของบุคคลที่สามที่ฉันใช้อยู่ ฉันคิดว่ามันเกี่ยวข้องกับไลบรารี Prototype javascript แต่ฉันเริ่มคิดว่ามันไม่ใช่อย่างนั้น สิ่งเหล่านี้ใช้ทำอะไร?

4
เหตุใดต้นแบบฟังก์ชันของ Perl 5 จึงไม่ดี
ในคำถาม Stack Overflow อื่น Leon Timmermansยืนยันว่า: ฉันขอแนะนำว่าอย่าใช้ต้นแบบ พวกเขามีการใช้งาน แต่ไม่ใช่สำหรับกรณีส่วนใหญ่และไม่แน่นอนในกรณีนี้ เหตุใดจึงอาจเป็นจริง (หรืออย่างอื่น) ฉันมักจะจัดหาต้นแบบสำหรับฟังก์ชัน Perl ของฉันและฉันไม่เคยเห็นใครพูดอะไรไม่ดีเกี่ยวกับการใช้งานมาก่อน
116 perl  function  prototype 

5
อัพเดตตัวแปรขอบเขตหลักใน AngularJS
ฉันมีตัวควบคุมสองตัวตัวหนึ่งห่อหุ้มไว้ด้วยกัน ตอนนี้ฉันรู้ว่าขอบเขตลูกสืบทอดคุณสมบัติจากขอบเขตหลัก แต่มีวิธีอัปเดตตัวแปรขอบเขตหลักหรือไม่ จนถึงตอนนี้ฉันยังไม่พบวิธีแก้ปัญหาที่ชัดเจน ในสถานการณ์ของฉันฉันมีตัวควบคุมปฏิทินในแบบฟอร์ม ฉันต้องการอัปเดตวันที่เริ่มต้นและวันที่สิ้นสุดจากขอบเขตหลัก (ซึ่งก็คือแบบฟอร์ม) เพื่อให้แบบฟอร์มมีวันที่เริ่มต้นและวันที่สิ้นสุดเมื่อส่ง

5
Javascript เมื่อใดควรใช้ต้นแบบ
ฉันต้องการทราบว่าเมื่อใดจึงเหมาะสมที่จะใช้เมธอดต้นแบบใน js ควรใช้เสมอหรือไม่? หรือมีบางกรณีที่ไม่แนะนำให้ใช้และ / หรือถูกลงโทษด้านประสิทธิภาพ? ในการค้นหารอบ ๆ ไซต์นี้ด้วยวิธีการทั่วไปสำหรับการกำหนดเนมสเปซใน js ดูเหมือนว่าส่วนใหญ่จะใช้การใช้งานที่ไม่ใช่ต้นแบบ: เพียงแค่ใช้อ็อบเจกต์หรืออ็อบเจ็กต์ฟังก์ชันเพื่อห่อหุ้มเนมสเปซ มาจากภาษาตามคลาสมันยากที่จะไม่ลองวาดแนวขนานและคิดว่าต้นแบบก็เหมือนกับ "คลาส" และการใช้งานเนมสเปซที่ฉันพูดถึงก็เหมือนกับวิธีการคงที่

8
javascript forEach ใช้อะไรได้บ้าง (แผนที่นั้นไม่สามารถทำได้)
ข้อแตกต่างเดียวที่ฉันเห็นในแผนที่และ foreach mapคือส่งคืนอาร์เรย์และforEachไม่ใช่ อย่างไรก็ตามฉันไม่เข้าใจบรรทัดสุดท้ายของforEachวิธีการ " func.call(scope, this[i], i, this);" ด้วยซ้ำ ยกตัวอย่างเช่นไม่ได้ " this" และ " scope" หมายถึงวัตถุเดียวกันและไม่ได้เป็นthis[i]และiหมายถึงค่าปัจจุบันในวง? ฉันสังเกตเห็นในโพสต์อื่นมีคนพูดว่า "ใช้forEachเมื่อคุณต้องการทำบางสิ่งบนพื้นฐานของแต่ละองค์ประกอบของรายการคุณอาจจะเพิ่มสิ่งต่างๆลงในเพจเป็นต้นโดยพื้นฐานแล้วมันยอดเยี่ยมสำหรับเมื่อคุณต้องการ" ผลข้างเคียง " ฉันไม่รู้ความหมายของผลข้างเคียง Array.prototype.map = function(fnc) { var a = new Array(this.length); for (var i = 0; i < this.length; i++) { a[i] = fnc(this[i]); } return a; } Array.prototype.forEach = …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.