Welcome to JS Bin
Load cached copy from
 
<!doctype html>
<html>
<head>
  <title>JS Bin</title>
  <link href="http://code.jquery.com/qunit/qunit-1.18.0.css" rel="stylesheet"/>
</head>
<body>
  <div id="qunit"></div>
  <div id="qunit-fixture"></div>
  <script src="//code.jquery.com/jquery-2.1.1.min.js"></script>
  <script src="//canjs.com/release/2.2.6/can.jquery.js"></script>
  <script src="//canjs.com/release/2.2.6/can.map.define.js"></script>
  <script src="//canjs.com/release/2.2.6/can.stache.js"></script>
  <script src="//canjs.com/release/2.2.6/can.fixture.js"></script>
  <script src="http://code.jquery.com/qunit/qunit-1.18.0.js"></script>
  <script>
    var Person = function(name){
            this.name = name;
        }
        Person.prototype.species = 'Homo Sapien';
        Person.prototype.speak =function(toWhom) { 
            return 'Hello ' + toWhom + '. My name is ' + this.name + '.';
        }
    module('new, dot, and dotcall');
        test('NEW', function(){
            var person = NEW(Person, ['Alexis']);
            equal(person.name, 'Alexis', 'new function called');
            var greet = 'Hello Justin. My name is Alexis.';
            equal(person.speak('Justin'), greet, 'method on prototype called');
        });
    test('INSTANCEOF', function() {
            var person = new Person('Alexis');
            ok(INSTANCEOF(person, Person), 'person is an instanceof Person');
            ok(INSTANCEOF(person, Object), 'person is an instanceof Object');
            equal(INSTANCEOF(person, Array), false, 'person is not an instanceof Array');
        });
  </script>
</body>
</html>
 
/*
Write the new operator as if it was implemented in JS.
var Person = function(name) {
    this.name = name;
}
Person.prototype.speak = function(){ console.log(‘Hello!’) }
var person = NEW( Person, ['name'] );
// var person = new Person(‘name’)
person.speak();
Example:
var justin = new Person('Justin');
var alexis = NEW(Person, ['Alexis']);
justin.speak(); //Justin
alexis.speak(); //Alexis
Hints:
NEW takes the constructor function and an array of arguments
*/
NEW = function(constructor, args) {
  //create a new object: {}
  //set proto of our object, to the prototype of the constructor
  //call constructor with our object as the context
  //return our new object
};
/*
  Write the instanceof operator as if it was implemented in JS.
    var Person = function(name) {
        this.name = name;
    }
    person = new Person( 'Alexis' );
    INSTANCEOF( person, Person );
    Hints:
    Check the proto chain for the constructor’s prototype.
    var Person = function(name) {
        this.name = name;
    };
    var person = new Person('Justin');
    person instanceof Person; //true
    INSTANCEOF(person, Person); //true
    person instanceof Object; //true
    INSTANCEOF(person, Object); //true
    person instanceof Array; //false
    INSTANCEOF(person, Array); //false
*/
INSTANCEOF = function(obj, constructor) {
  //walk up obj's proto chain until
  //the prototype of our constructor is found
};
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x