<v ->In lesson four, we learned how to make plain objects</v> which were used as simple associative arrays of key value pairs. In lesson seven, you learn how to make more general versions of JavaScript objects, ones that have both properties which are data and methods which are functioned attached to them. There is a dizzying variety of ways to define objects in JavaScript, but we'll focus on one of the most classic ways, which is to use functions which we first covered in lesson five. The result will be an object constructor function that can be used to create or instantiate a new object called an instance using the new method we first saw in lesson four. This will give us the background needed to understand JavaScript object system, which is based on template objects and a prototype chain. If that doesn't seem perfectly clear, don't worry, it's not. I don't think anyone ever understood object systems by hearing definitions like that one. Instead, we'll look at a series of objects of increasing complexity allowing you to understand the essence of JavaScript objects by generalizing, from concrete examples. In particular, we'll define a phrase object that knows whether or not the phrase is a palindrome, we'll then add a translated phrase object that overrides the main palindrome method and substitutes a translated phrase instead. We'll end with the powerful, even dangerous practice of modifying native JavaScript objects. This will allow us to modify the string prototype itself giving every string the ability to tell whether or not it's a palindrome.