zoukankan      html  css  js  c++  java
  • Javascript Notes

    Get started with Programming

    Javascript中的保留字,但是大部分却没在这个语言中使用。undefined,NaN,Infinity也应该算保留字。

    abstract 
    boolean break byte 
    case catch char class const continue 
    debugger default delete do double
    else enum export extends 
    false final finally float for function 
    goto 
    if implements import in instanceof int interface 
    long 
    native new null 
    package private protected public 
    return 
    short static super switch synchronized 
    this throw throws transient true try typeof 
    var volatile void 
    while with
    Reserved Words

    confirm("I am ok");
    prompt("Are you ok?");

    "text".length
    console.log();

    > Greater than
    < Less than
    <= Less than or equal to
    >= Greater than or equal to
    === Equal to
    !== Not equal to

    "text".substring(0, 2);

    confirm("I am ready to play!");
    var age = prompt("What's your age");
    if (age < 13) {
        console.log("You're allowed to play but you take no responsibility.");
    } else {
        console.log("Play on!");    
    }
    
    console.log("You are at a Justin Bieber concert, and you hear this lyric 'Lace my shoes off, start racing.'");
    
    console.log("Suddenly, Bieber stops and says, 'Who wants to race me?'");
    
    var userAnswer = prompt("Do you want to race Bieber on stage?");
    
    if (userAnswer === "yes") {
        console.log("You and Bieber start racing. It's neck and neck! You win by a shoelace!");    
    } else {
        console.log("Oh no! Bieber shakes his head and sings 'I set a pace, so I can race without pacing.'");    
    }
    
    var feedback = prompt("Could you give a rate?");
    if (feedback > 8) {
        console.log("Thank you! We should race at the next concert!");    
    } else {
        console.log("I'll keep practicing coding and racing.");    
    }
    Prompt
    var userChoice = prompt("Do you choose rock, paper or scissors?");
    var computerChoice = Math.random();
    if (computerChoice < 0.34) {
        computerChoice = "rock";
    } else if(computerChoice <= 0.67) {
        computerChoice = "paper";
    } else {
        computerChoice = "scissors";
    } console.log("Computer: " + computerChoice);
    
    var compare = function(choice1, choice2) {
        if (choice1 === choice2) {
            return "The result is a tie!";
        } else if (choice1 === "rock") {
            if (choice2 === "scissors") {
                return "rock wins";    
            } else {
                return "paper wins";    
            }
        } else if (choice1 === "paper") {
            if (choice2 === "scissors") {
                return "scissors wins";    
            } else {
                return "paper wins";    
            }
        } else {
            if (choice2 === "paper") {
                return "scissors wins";    
            } else {
                return "rock wins";    
            }
        }
    }
    
    compare(userChoice, computerChoice);
    Rock-Paper-Scissors
    var slaying =  true;
    var youHit =  Math.floor(Math.random() * 2);
    var damageThisRound = Math.floor(Math.random() * 5 + 1);
    var totalDamage = 0;
    
    while (slaying) {
      if (youHit) {
        console.log("You hit the dragon and did " + damageThisRound + " damage!");
        totalDamage += damageThisRound;
        
        if (totalDamage >= 4) {
          console.log("You did it! You slew the dragon!");
          slaying = false;
        } else {
          youHit = Math.floor(Math.random() * 2);
        }
      } else {
        console.log("The dragon burninates you! You're toast.");
        slaying = false;
      }
    }
    Slaying Dragon

    Objects in JS

    var phonebookEntry = {};
    
    phonebookEntry.name = 'Oxnard Montalvo';
    phonebookEntry.number = '(555) 555-5555';
    phonebookEntry.phone = function() {
      console.log('Calling ' + this.name + ' at ' + this.number + '...');
    };
    
    phonebookEntry.phone();
    Create an Object
    var me = {name: "Dave Obama", age: 55};
    Create an Object
    var me = new Object();
    me.name = "Dave Obama";
    me["gender"] = "male";
    me.age = 55;
    Create an Object
    var friends = {};
    friends.bill = {
      firstName: "Bill",
      lastName: "Gates",
      number: "(206) 555-5555",
      address: ['One Microsoft Way','Redmond','WA','98052']
    };
    friends.steve = {
      firstName: "Steve",
      lastName: "Jobs",
      number: "(408) 555-5555",
      address: ['1 Infinite Loop','Cupertino','CA','95014']
    };
    
    var list = function(obj) {
      for(var prop in obj) {
        console.log(prop);
      }
    };
    
    var search = function(name) {
      for(var prop in friends) {
        if(friends[prop].firstName === name) {
          console.log(friends[prop]);
          return friends[prop];
        }
      }
    };
    
    list(friends);
    search("Steve");
    Contact List

    Introduction to Objects

    dot notation => new Object()

    bracket notation => { }

    // here we define our method using "this", before we even introduce bob
    var setAge = function (newAge) {
      this.age = newAge;
    };
    // now we make bob
    var bob = new Object();
    bob.age = 30;
    // and down here we just use the method we already made
    bob.setAge = setAge;
      
    // change bob's age to 50 here
    bob.setAge(50);
    The "this" keyword
    var square = new Object();
    square.sideLength = 6;
    square.calcPerimeter = function() {
      return this.sideLength * 4;
    };
    // help us define an area method here
    
    square.calcArea = function() {
        return this.sideLength * this.sideLength;    
    };
    
    var p = square.calcPerimeter();
    var a = square.calcArea();
    The "this" keyword
    function Rabbit(adjective) {
        this.adjective = adjective;
        this.describeMyself = function() {
            console.log("I am a " + this.adjective + " rabbit");
        };
    }
    
    // now we can easily make all of our rabbits
    
    var rabbit1 = new Rabbit("fluffy");
    var rabbit2 = new Rabbit("happy");
    var rabbit3 = new Rabbit("sleepy");
    
    rabbit1.describeMyself();
    rabbit2.describeMyself();
    rabbit3.describeMyself();
    Constructor

    Why is using “for…in” with array iteration such a bad idea?

    function Circle (radius) {
        this.radius = radius;
        this.area = function () {
            return Math.PI * this.radius * this.radius;
            
        };
        // define a perimeter method here
        this.perimeter = function () {
            return Math.PI * this.radius * 2;    
        }
    };
    Define methods in Constructor
    // complete these definitions so that they will have
    // the appropriate types
    var anObj = { job: "I'm an object!" };
    var aNumber = 42;
    var aString = "I'm a string!";
    
    console.log( typeof anObj ); // should print "object"
    console.log( typeof aNumber ); // should print "number"
    console.log( typeof aString ); // should print "string"
    
    
    var myObj = {
        // finish myObj
        name: "Obama"
    };
    
    console.log( myObj.hasOwnProperty('name') ); // should print true
    console.log( myObj.hasOwnProperty('nickname') ); // should print false
    
    
    var suitcase = {
        shirt: "Hawaiian"
    };
    
    if (suitcase.hasOwnProperty("shorts")) {
        console.log(suitcase.shorts);
    } else {
        suitcase.shorts = "Hello";
        console.log(suitcase.shorts);
    }
    
    
    var nyc = {
        fullName: "New York City",
        mayor: "Bill de Blasio",
        population: 8000000,
        boroughs: 5
    };
    
    for (var prop in nyc) {
        console.log(prop);    
        console.log(nyc[prop]); 
    }
    typeof hasOwnProperty
    function Dog (breed) {
      this.breed = breed;
    }
    
    // here we make buddy and teach him how to bark
    var buddy = new Dog("Golden Retriever");
    buddy.bark = function() {
      console.log("Woof");
    };
    buddy.bark();
    
    // here we make snoopy
    var snoopy = new Dog("Beagle");
    // we need you to teach snoopy how to bark here
    snoopy.bark = function() {
        console.log("abc");    
    }
    // this causes an error, because snoopy doesn't know how to bark!
    snoopy.bark();
    Methods just for one object
    function Dog (breed) {
      this.breed = breed;
    };
    
    // here we make buddy and teach him how to bark
    var buddy = new Dog("golden Retriever");
    Dog.prototype.bark = function() {
      console.log("Woof");
    };
    buddy.bark();
    
    // here we make snoopy
    var snoopy = new Dog("Beagle");
    /// this time it works!
    snoopy.bark();
    Prototype
    //Example of inheriting methods
    // the original Animal class and sayName method
    function Animal(name, numLegs) {
        this.name = name;
        this.numLegs = numLegs;
    }
    Animal.prototype.sayName = function() {
        console.log("Hi my name is " + this.name);
    };
    
    // define a Penguin class
    function Penguin(name) {
        this.name = name;
        this.numLegs = 2;
    }
    
    // set its prototype to be a new instance of Animal
    Penguin.prototype = new Animal();
    
    
    
    //Example of inheriting properties
    function Penguin(name) {
        this.name = name;
        this.numLegs = 2;
    }
    
    // create your Emperor class here and make it inherit from Penguin
    function Emperor(name) {
        this.name = name;    
    }
    
    Emperor.prototype = new Penguin();
    // create an "emperor" object and print the number of legs it has
    var emperor = new Emperor("Dave");
    console.log(emperor.numLegs);
    Inheritance
    var languages = {
        english: "Hello!",
        french: "Bonjour!",
        notALanguage: 4,
        spanish: "Hola!"
    };
    
    // print hello in the 3 different languages
    for (var prop in languages) {
        if (typeof languages[prop] === "string")
            console.log(languages[prop]);
    }
    Another typeof example
    // what is this "Object.prototype" anyway...?
    var prototypeType = typeof Object.prototype;
    console.log(prototypeType);
    
    // now let's examine it!
    var hasOwn = Object.prototype.hasOwnProperty("hasOwnProperty");
    console.log(hasOwn);
    Object.prototype
    function StaffMember(name,discountPercent){
        this.name = name;
        this.discountPercent = discountPercent;
    }
    
    var sally = new StaffMember("Sally",5);
    var bob = new StaffMember("Bob",10);
    
    // Create yourself again as 'me' with a staff discount of 20%
    var me = new StaffMember("Dave", 20);
    
    
    var cashRegister = {
        total:0,
        lastTransactionAmount: 0,
        add: function(itemCost){
            this.total += (itemCost || 0);
            this.lastTransactionAmount = itemCost;
        },
        scan: function(item,quantity){
            switch (item){
            case "eggs": this.add(0.98 * quantity); break;
            case "milk": this.add(1.23 * quantity); break;
            case "magazine": this.add(4.99 * quantity); break;
            case "chocolate": this.add(0.45 * quantity); break;
            }
            return true;
        },
        voidLastTransaction : function(){
            this.total -= this.lastTransactionAmount;
            this.lastTransactionAmount = 0;
        },
        // Create a new method applyStaffDiscount here
        applyStaffDiscount: function(employee) {
            this.total *= (100 - employee.discountPercent)/100;    
        }
        
    };
    
    cashRegister.scan('eggs',1);
    cashRegister.scan('milk',1);
    cashRegister.scan('magazine',3);
    // Apply your staff discount by passing the 'me' object 
    // to applyStaffDiscount
    cashRegister.applyStaffDiscount(me);
    
    // Show the total bill
    console.log('Your bill is '+cashRegister.total.toFixed(2));
    Cash Register
    var myObject = {value: 10};
    var add =function (a, b) {return a + b;}; // “this” is not whomever calls the object.
    
    myObject.double = function () {     
        var that = this;    // Workaround.
        var helper = function () {         
            that.value = add(that.value, that.value);     
        };     
        helper();
        // Invoke helper as a function.
    };
    // Invoke double as a method.
    myObject.double();
    console.log(myObject.value);
    This
    var add = function (a, b) {     
        if (typeof a !== 'number' || typeof b !== 'number') {         
            throw {             
                name: 'TypeError',             
                message: 'add needs numbers'         
            };     
        }     
        return a + b;
    }
    
    var try_it = function () {
        try {         
            add("seven");     
        } catch (e) {         
            console.log(e.name + ': ' + e.message);
        }
    }
    
    try_it();
    Try Catch
    var myObject = (function () {     
        var value = 0;     
        return {         
            increment: function (inc) {             
                value += typeof inc === 'number' ? inc : 1;         
            },         
            getValue: function () {             
                return value;         
            }     
        };
    }());
    
    myObject.increment(45);
    myObject.increment(25);
    console.log(myObject.getValue());
    Return an Object containing methods
    var fade = function (node) {
        var level = 1;
        var step = function () {
            var hex = level.toString(16);
            node.style.backgroundColor = '#FFFF' + hex + hex;
            if (level < 15) {
                level += 1;
                setTimeout(step, 100);
            }
        };     
        setTimeout(step, 100);
    };
    
    fade(document.body);
    
    
    
    <html>
        <body>
            <pre>
                <script src="program.js"></script>
            </pre>
        </body>
    </html>
    Fade
    var i, word, 
    text = "This oracle of comfort has so pleased me, " + 
    "That when I am in heaven I shall desire " + 
    "To see what this child does, " + 
    "and praise my Constructor.";
    
    var words = text.toLowerCase().split(/[s,.]+/);
    var count = {};
    for (i = 0; i < words.length; i += 1) {
        word = words[i];
        if (typeof count[word] === 'number') { // Do not use if (count[word])  here, because count inherited “constructor” from Object. += does concatenation when its operators are not numbers.
            count[word] += 1;
        } else {
                count[word] = 1;    
        }     
    }
    
    for (var prop in count) {
        console.log(prop + ": " + count[prop]);
    }
    View Code
  • 相关阅读:
    Timestamp (rowversion) Data Type
    replace(/\s/g,"")中的/g是什么意思? 及replace函数的用法
    取消ie6自动打开excel
    C#日期函数使用大全
    Photoshop制作Favicon.ico图标(转载)
    为什么就没有中文版 数据库设计和优化 的书呢
    C#操作Access的一些小结
    asp.net 下发布水晶报表调试经验
    ASREP Roasting & Kerberoast
    重新点亮linux 基本软件————防火墙[一]
  • 原文地址:https://www.cnblogs.com/null00/p/3989715.html
Copyright © 2011-2022 走看看